Forum Moderators: phranque

Message Too Old, No Replies

Prefork module performance question

         

LeoNatan

11:25 am on Dec 5, 2010 (gmt 0)

10+ Year Member



Hello,

I have a question about a curious performance result I get. I have a server that is configured with prefork and as follows in httpd.conf:

ServerLimit 5 [10]
MaxClients 5 [10]

These are the average page load times I get with JMeter:

5511,622 ms
51022,649 ms
53559,866 ms

10515,475 ms
101030,288 ms
103555,921 ms

First column is how ServerLimit and MaxClients are configured. Second column is the number of concurrent users (threads) set in JMeter. Third column is page average load time.
The results are before optimization, so don't mind the scare numbers.

So my question is, why would response time be lower with 5 processes instead of 10? I have checked with top and memory is enough, so no trashing occurs. What other causes could there be? The server is a single-core, single-CPU Intel Celeron.

Thanks in advance,
Leo

lammert

11:37 am on Dec 13, 2010 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month



Hello Leo, first of all Welcome to WebmasterWorld!

A server limit of 5 (10) is a low value, and what happens if more requests come in than the limit you have set here, the Apache server starts to drop connections with serving them a small page with a 503 Service Unavailable error. These error pages are served very fast, much faster than your normal content pages. The JMeter program might count these small pages erroneously as correct pages and therefore think that you have a fast server.

LeoNatan

6:28 am on Dec 15, 2010 (gmt 0)

10+ Year Member



Hi lammert,

Thanks for your reply!
JMeter counts anything outside of the 2xx line of responses as a failure, and I did not get failures when running the tests.
At any rate, I have run the same tests on a much more powerful machine (this time with Avalanche load test appliance) and did not get a similar result, which leads me to believe that the synchronization mechanism of Apache, coupled with a high HTTP load (no caching) and a backend daemon, was just too much for the machine.