DISCUSS: ZServer Server Manager (was RE: [Zope-dev] error when st arting with ZServer) arting with ZServer)
[Hijacking a perfectly useful conversation...] Yesterday we got a couple of emails letting us know that some URLs weren't responding. The URLs were to ZServer-based sites and ZServer doesn't do process activation like PCGI does. Also, there was discussion here recently about a fictional mod_pcgi (or mod_zope, or whatever). One of the things brought up was that PCGI should decouple process activation from the IPC/RPC mechanism. We need to start work a "Zope Server Manager". Instead of waiting until I have everything written down, I thought I'd go ahead and start the discussion with what I have. Zope Server Manager Summary Provide a facility that registers, activates, and manages Zope processes on a system. Background Zope's current PCGI approach uses a small C executable called a "wrapper". The wrapper is run on each web request as a CGI script. Its job is to start Zope if it isn't running, package up the request, communicate with Zope, and return Zope's response to the web server. This approach has worked extremely well to date. It nicely balances adherence to a popular and simple standard (CGI) with performance/load issues. Obviously this approach has significant performance hits associated with forking and executing on each request. On Windows this can be especially painful. Digital Creations is also hard at work on ZServer, which allows an object system to publish simultaneously to PCGI, HTTP, and FTP requests. ZServer cannot have a strategy for being activated by a wrapper. It needs to have a server manager strategy. Integrating with Apache is painful, and Apache is the easiest to deal with. The frustration is usually caused by issues such as ownership of files, paths to startup scripts, vagueries with dynamically loaded modules, etc. Unfortunately, the very nature of the current PCGI approach makes it very difficult to produce meaningful error messages. Under Windows we don't have these problems. The NT Service, when combined with registry keys, allows our "wrapper" programs to find its Zope and not worry about starting or restarting it. Also, the Event Service provides a uniform way for both sides (wrapper and Zope) to report errors. Unix has facilities that mimic this. Most conspicuously, System V has a facility for init called 'inittab'. This allows sysadmins to manage a database of processes that should be started at boot time. The facility also allows you to specify that processes should be restarted if they exit. Additionally, a number of software packages have been written to act as server managers. Finally, syslog provides a uniform reporting facility. Goals o Vastly simplify integration with other web servers, thus greatly reducing the number of complaints o Speed up initial connection time o Significantly reduce the code needed for an Apache module, thus increasing reliability of something ISPs will need to load and trust o View information through the web about all ZServers running on a system, such as the information found in mod_status for Apache o Decouple the URL (web server integration) from the actual process, paving the way for features such as load balancing and failover amongst N processes o Provide a central place for Anthony to incorporate SNMP :^) Requirements *Add, edit, or disable ZServer installations*. *Manageable in user space, not by root*. --Paul
participants (1)
-
Paul Everitt