You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Dale Couch <dc...@training.orl.lmco.com> on 1998/06/05 16:25:50 UTC

Performance Under Win32 and Mod_perl

I am currently running an Apache server with Mod_perl and it is serving
exactly 1 CGI.  The users enter from another Web server and run just this
Perl program.

I am starting to see that the load is getting to big and I am wondering if
there might be some places that I can start looking to try to get the
performance up.

   Current Time: Friday, 05-Jun-1998 10:05:51 Eastern Daylight Time
   Restart Time: Friday, 05-Jun-1998 06:01:54 Eastern Daylight Time
   Server uptime: 4 hours 3 minutes 57 seconds
   Total accesses: 8207 - Total Traffic: 41.5 MB
   .561 requests/sec - 2975 B/second - 5.2 kB/request
   38 requests currently being processed, 26 idle servers

(I have seen the idle servers go to 6)  Currently I am seeing a request take
about 20-30 seconds to process.

This is running

   Server Version: Apache/1.3.1-dev (Win32) mod_perl/1.11_01-dev
   Server Built: Jun 4 1998 05:34:32

Both built using CVS snapshots from that morning.  Using installd, installr
will not run with mod_perl added in, at least not for me.

Since Apache is running under Win32 there is only one Apache executable
running and therefore every request must go through the one Mod_perl Mutex.
I am assuming that this is where the performance problem is.  I am working
to make the script more efficient, but it is a multi-page CGI app and I did
a lot to get it as fast as it is.

The big question is, is there anything that I can do to help Apache service
more requests?  Looking at the docs and such, under Unix I would have just
added more apache processes to take in requests and everything would start
to settle down.  The machine has plenty of ram and processor power.
Currently Apache only takes 20MB and the CPU hovers at 30% utilization, this
is with Oracle and a couple of other file services running along with it, so
I have enough horsepower, but I cannot seem to get Apache to use any of it.

In the Win32 thread model the modules like Mod_perl have to start a Mutex to
keep state while the process runs, so that no other incoming request gets
the CGI confused, isn't this sort of a backwards step for Apache to take?
It all comes down to one little pipe, whereas the Unix Apache has multiple
processes that can handle requests simultaneously.  Am I misinformed about
how this works?

Any suggestions, other than install some flavor of Unix?  I am not out for
some OS bashing war or any other type of flame fest, I want to make what I
have work.

Please do not get me wrong, I could not have gotten this far without Apache
and Mod_perl, IIS and CGI perl would not have come within a mile of this
performance, unfortunately I need more.

Thanks

Dale

WinNT 4.0 SP3
MSVC++ 5.0 SP2
Perl 5.004_04