0

I know many questions have been asked on this subject, but I didn't find an answer to help me.

I'm trying to have Apache httpd answer 200 concurrent connections. I'm testing with jMeter, fetching a small static text file (about 100 bytes), using prefork; MaxClient & ServerLimit at 500, neither memory or CPU are limiting (both are under 50%), bandwidth is 1Gbps.

  • if I start only one connection, the response time is about 7ms
  • if I start a few concurrent connections (let's say 2 or 3), the response time goes to 70ms
  • if I start a little more (let's say 20), the reponse time is over 2s even for the first connection

Using keep-alive doesn't change much. Restarting httpd doesn't help neither.

Am I doing something wrong? how can I fix that?

Thanks in advance

greg

greg
  • 169
  • 11
  • How many httpd processes are running in each of your three cases? Enable server-status (http://httpd.apache.org/docs/2.2/mod/mod_status.html) and examine the output as your load increases. If you haven't already, worth looking at is the latency, you can enable that in JMeter's Listeners (e.g. Graph Results) by clicking the Configure button. – KM. May 15 '14 at 14:17
  • Thanks for your answer. I was indeed watching apache status (not easy since it's a http request and therefore was timeout'ing). That lead me to the solution writen below. – greg May 16 '14 at 00:16

1 Answers1

0

To solve the problem I had to permanently increase the number of running processes. Instead of:

StartServers          5
MinSpareServers       5
MaxSpareServers      10

I changed to:

StartServers        300
MinSpareServers     300
MaxSpareServers     300

Now the response times are acceptable. It seems creating/killing processus is very heavy even for fast computers...

greg
  • 169
  • 11