durusmail: quixote-users: Overlaying a static directory
Overlaying a static directory
2005-04-11
2005-04-12
2005-04-12
2005-04-12
2005-04-13
2005-04-13
2005-04-14
2005-04-14
2005-04-14
2005-04-14
2005-04-14
2005-04-14
2005-04-14
2005-04-14
2005-04-14
2005-04-14
David Binger (3 parts)
2005-04-14
2005-04-14
2005-04-13
2005-04-14
2005-04-14
2005-04-13
SCGI util.
2005-04-12
2005-04-13
2005-04-13
2005-04-13
2005-04-13
Overlaying a static directory
Neil Schemenauer
2005-04-13
On Tue, Apr 12, 2005 at 06:26:48PM -0700, mso@oz.net wrote:
> OK, I did a bunch of more tests.  The same problem happens with Apache
> 1.3.33 and mod_scgi 1.  Pressing Reload or Shift-Reload on any page in a
> StaticDirectory produces: (1) Internal Server Error, (2) the page without
> images, (3) the page correctly.  It keeps on cycling in approximately that
> order.
>
> If you reload a dynamic page, the dynamic HTML always comes up but any
> dependent content (images, stylesheet) have a 50/50 chance of
> disappearing.  Sometimes the images and stylesheet disappear
> alternatingly.  (The dependent content are separate StaticFile instances
> in this case.)
>
> Whenever (1) or (2) happens, Apache2 logs:
> [Tue Apr 12 17:02:12 2005] [error] [client 127.0.0.1] (304)Unknown error
> 304: scgi: Unknown error 304: error reading response headers
>
> Apache1 logs almost the same thing:
> [Tue Apr 12 17:01:53 2005] [error] [client 127.0.0.1] scgi: error reading
> response headers

That's strange.  What OS are you using?  If you can, try recording
the Apache<->SCGI server coversation using tcpdump.  For example, if
your SCGI server is listening on port 3000, as root run:

    # tcpdump -i lo -s 9000 -w capture.dat port 3000

After tcpdump is running then try reloading the page in your browser
to provoke the problem.  Use Control-C to stop capturing.  If you
send me the capture file then I will take a look at it.  You can use
different tools to look at the capture file.  I like Ethereal:

    $ ethereal -r capture.dat

The "follow TCP stream" function is really useful.

> How does the SCGI server handle concurrency?  mod_scgi uses multiple
> processes, but there's only one server process.  Does each request wait
> till the previous one is done?  Does that mean Apache's multiproces model
> doesn't really solve anything because there's still a server bottleneck?
> Could that be why I'm having problems with dependent images?  But why
> should StaticFiles be more affected?

The SCGI server uses a pre-fork model.  There is a parent process
that forks off worker children.  When a request comes in the parent
receives it and passes it to one of the children.  The child takes
care of the request and notifies the parent when it has finished.

> There's another problem with all SCGI versions (1, 2, and cgi2scgi).  If
> the script_name specified to the SCGI server at launch does not match the
> URL prefix actually requested, Apache says "premature end of script
> headers" and the Quixote error log doesn't say a peep.  That's with the
> SCGI server running as a system service (launched from /etc/init.d).

You really need to redirect the stderr of the server process
somewhere.  Ideally I guess it should go the same place as the
Quixote error log by default.  Currently it does not.

  Neil

reply