[mod_python] CGI handler and multithreading: Can i have multiplesys.stdout objects?

Scott Chapman scott_list at mischko.com
Fri Feb 28 10:17:29 EST 2003


In the meantime, you might set up a cron job at 7:45am that accesses the web 
pages before the rush starts so the stuff is "preloaded" and not swapped.

On Thursday 27 February 2003 11:38 pm, Mike Looijmans wrote:
>Your best bet is the prefork MPM. Remember that the 10M per child is
>actually a lot less because pages for executables are shared between
>processes on (most) UNIXes, certainly on Solaris they are. I find it hard
>to believe that it is slower than regular CGI - it should be at least
>several times faster, though not nearly as efficient as using the
>publisher or a native handler.


The trouble with performance is in our clients' access patterns. Basically, at
8:00 the whole world comes falling dowon on the machine and everybody wants to
use it, accessing it many times each second. The rest of the day it's rather
quiet. What appears to happen is that the apache child processes get their
data segments swapped out during the quiet day to make room for other stuff
that is running on the same machine. Then in the morning, that must all be
swapped back and the first requests are incredibly slow. I noticed that the
'startup' effect almost vanished when i migrated from apache 1.3 to 2.0
(worker mpm). I think that's because the worker system can keep 20 child
threads ready for action whereas the preforked processes tend to fall into
coma. Also, the CGI scripts are run in a separate process by the server, which
seems to reduce the overhead compared to the prefork way of starting the CGI.
Apache 2.0 with prefork behaved similar to that.





More information about the Mod_python mailing list