[Zope-dev] DISCUSS: ZServer Server Manager (was RE: [Zope-dev] error when st arting with ZServer) arting with ZServer)

Paul Everitt Paul@digicool.com
Wed, 24 Mar 1999 07:31:20 -0500


[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