in reply to Re^2: CgiProxy And Heavy Visitors
in thread CgiProxy And Heavy Visitors

The load refers to how many processes are ready to run on average when the scheduler has to pick someone. If the system is on its knees and load is low, then you have a bottleneck elsewhere. It seems likely that your system is heavily in swap, but it is also possible that you are doing something else silly like disconnecting from the database with every request. (That particular silliness should not bring you below the performance of mod_cgi, and you show other signs of memory problems.)

I would still go with my previous recommend as an obvious first step. After you do that you should be able to drop the number of mod_perl Apache kids substantially and maintain throughput. It would also be good longer term to audit the code looking for where memory is likely to be allocated and not freed at the end of each request. Devel::Leak may help you do that.

I'm not entirely sure of what you mean by "automatically restart of apache every 10 minutes". If you mean that Apache has to stop and launch again, that suggests that your machine is getting out of memory and random processes are being killed. This is very bad. If you mean that Apache children are dying that frequently, that is fairly harmless. Think of it this way, if your average Apache child lasts 10 minutes and you have 20 of them, then you have one child being launched every 30 seconds. Compare with 45 being launched per second and you see improvement. The time to be able to launch processes is not going to be an issue until they die a lot faster than that!

Incidentally once you are on mod_perl, writing real mod_perl handlers rather than using Apache::Registry should both considerably boost performance and save memory. (I don't know that you're using that, but it is a pretty safe guess.)

Replies are listed 'Best First'.
Re^4: CgiProxy And Heavy Visitors
by artin (Initiate) on Apr 13, 2005 at 10:02 UTC
    hi again i installed 4gig ram and now i am useing mod_perl now i dont have any problem ! cpu load low , memory usage low and pages loading very fast i just wana know how can i configure perl to use mod_gzip , already installed mod_gzip and it compressing all pages but its not compressing perl scripts :( what can i do ?
      I've never tried to make mod_perl and mod_gzip cooperate. My natural inclination would be to go with the reverse proxy setup that I suggested, and put mod_gzip on the proxy servers. If that fails my other alternatives that I'd consider would be to google to see if anyone else has done it, post the question to Seekers of Perl Wisdom (where more people will see it than will see this reply), ask on an Apache list, or try to upgrade to Apache 2 and hope that mod_deflate works better than mod_gzip. I'd try them in that order.
Re^4: CgiProxy And Heavy Visitors
by artin (Initiate) on Apr 14, 2005 at 09:11 UTC
    hi again now i have 4gig memory useing mod_perl and server is fast ! just some more question : 1-can u recommend a good number for MinSpareServers,MaxSpareServers,StartServers and MaxRequestsPerChild 2-how can i turn on mod_gzip for perl scripts ? thanks