On Sun, 21 May 2000, G.W. Haywood wrote:

> You might think that it serves little purpose for a light Apache
> server simply to pass all requests from a socket through to a heavy
> mod_perl server, only then to receive the reply and pass it back to
> the socket.
> 
> But you don't usually know what is the other side of the socket, and
> so you don't know how fast the buffer will be emptied.  It might take
> a couple of minutes if the client is on a slow line.
> 
> Your processes could all be waiting for the socket buffers to be
> emptied by slow clients, so there may be no free child to serve an
> incoming request.  In that case Apache will just keep spawning new
> ones (if it's allowed) for any new incoming requests.  You could build
> up a big heap of waiting processes.  You will have far less resources
> consumed by the waiting processes if they are plain Apache children
> than you will if they are Apache+mod_perl children.  So you will be
> able to spawn more processes, and so serve more incoming requests.

But the guide seems to be saying that the speed of the client isn't 
an issue--the process (proxy _or_ mod_perl) is released as soon as it
finishes putting the outputted page into the OS socket buffer. I assume
"released" means it can go and serve another request. Am I reading it
wrong?

> >  "Therefore if you don't use mod_proxy and mod_perl send its data
> >   directly to the client, and you have a big socket buffer, the
> >   mod_perl process will be released as soon as the last chunk of data
> >   will enter the buffer. Just like with mod_proxy, OS will worry to
> >   complete the data transfer."

Chris


Reply via email to