2

I am trying to assess the performance of my web server which has Linux and Apache. I tried load testing using JMeter, and gradually increased the number of requests and recorded the response time as well as resource utilization stats. The response time increased after 40 hits per minute, however, the resource utilization remained same! CPU, Memory, Network, IO resources were under utilized even when I tried lots of requests resulting in slow response time. To be specific, the response time was good when the total number of requests per minute were under 6000, and when we tried out 8000 requests per minute the response time increased by 50%.

Info of the server:
Hardware: 1 Core with 2 GB RAM
OS: Ubuntu 12.04 LTS Server Edition

.

Application stack:
Apache, PHP

Apache configuration w.r.t number of clients:

<IfModule mpm_prefork_module>
    StartServers          50
    MinSpareServers       50
    MaxSpareServers      100
    MaxServers           600
    MaxClients           600
    MaxRequestsPerChild   0
</IfModule>

I am not clear, why these resources are under utilized. Could you please help me on what should I do so that I can use the resource utilization shoots up?

Here is the significant part of apache configuration:

LockFile ${APACHE_LOCK_DIR}/accept.lock
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 1000
KeepAliveTimeout 5

<IfModule mpm_prefork_module>
    StartServers         50
    MinSpareServers      50
    MaxSpareServers     100
    ServerLimit         600
    MaxClients          600
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_event_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

DefaultType None
HostnameLookups Off

Include mods-enabled/*.load
Include mods-enabled/*.conf
Include httpd.conf
Include ports.conf

Include conf.d/
Include sites-enabled/

2 Answers2

1

First thing is that, you should try different URLs for testing, not just one, which I believe you are trying.

Also, try increasing the values for MaxServers and MaxClients so that you don't hit a bottleneck. You can check the same whether you are hitting a bottleneck for the number of processes by using this command

 # watch "ps ax | grep -http | wc -l"

If it's close to 600, then you need to increase the value for them, so that you can stress test further. That also explains the not increasing load, because your connections are waiting for the server to get free from the previous connections.

Also, I will recommend disabling the keep-alive time (not sure whether already disabled), so that you could get much real results.

Aliaksandr Belik
  • 259
  • 6
  • 17
Napster_X
  • 3,333
  • 16
  • 20
  • Thanks. I tried the "watch" command, and i get maximum of 76. The CPU, RAM, IO and Network remain under-utilized. Any thoughts? – user1910258 Dec 17 '12 at 07:49
  • Can you please send the complete apache.conf file ... would be great if you can remove the commented lines and only paste the one which matters – Napster_X Dec 17 '12 at 10:06
  • Sure. I have edited my question, and have appended the content of apache conf to it. – user1910258 Dec 17 '12 at 14:26
  • Thanx .. but sadly that wasn't of much help as I believe most of the information is stored in the other conf files which are included in this main config file. Not sure how you can put all other conf files here :( ... May be you can try using some sort of service, like pastebin or something – Napster_X Dec 17 '12 at 17:52
0

Apache performance can be limited by the number of available file handles and processes. This article may help: http://www.webperformance.com/load-testing/blog/2012/12/setting-apache2-ulimit-for-maximum-prefork-performance/

(disclaimer: I work with the author)

CMerrill
  • 136
  • 1