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