Apache load testing on a Cloud Server – Jason – 7/31/2009
I recently created a cloud server for a wordpress blog, and configured it to the point that the blog was working OK. Then I decided to check the performance aspects of the server, as it was a small 256 MB + 10GB machine.
Using apachebench (ab), I ran some load tests on the blog home page. The server choked to death. It was swapping so bad, that RackSpace Cloud sent me this email:
This is an automatic notification to let you know that your Cloud Server, city.appcove.com, is showing a considerable amount of consistent swapping activity. Quite often this is an indicator that your application or database are not as efficient as they could be. It also may indicate that you need to upgrade your Cloud Server for more RAM.
That’s strange…
I found that the response rate was:
4 requests per second, 10 concurrent connections
When the concurrency was raised to 50, the server died. It took 10 minutes for it to calm down enough that I could LOG IN and KILL apache.
—
So upon further investingation, I found that the default httpd.conf configuration was WAY TOO LARGE:
We’re only working with 256 MB ram here, so if each apache process takes up any amount of memory at all, we have a low limit.
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
Only after drastically reducing the configuration to the following, did we get reasonable performance:
<IfModule prefork.c>
StartServers 4
MinSpareServers 2
MaxSpareServers 4
ServerLimit 4
MaxClients 4
MaxRequestsPerChild 4000
</IfModule>
As it turns out, the performance went up considerably:
16 requests per second, 50 concurrent connections
Still, I thought that it could get better. So I looked into installing some PHP opcode caching software.
http://www.php.net/manual/en/intro.apc.php
The Alternative PHP Cache (APC) is a free and open opcode cache for PHP. Its goal is to provide a free, open, and robust framework for caching and optimizing PHP intermediate code.
As it turns out, it was easy to install.
# yum install php-pecl-apc
And after restarting apache:
47 requests per second, 50 concurrent connections
Even during this load test, the site was still responsive from a web browser.
Not bad for a cheap little Cloud Server, eh?
Like this:
Like Loading...
Related
Sounds like the perfect project to test scaling techniques. Very cool.
I haven’t dealt with scaling much, but Theo Schlossnagle, from OmniTI, is one sick dude when it comes to scaling applications. He wrote a book a while back that may be of interest to you: http://scalableinternetarchitectures.com/
His blog is: http://lethargy.org/
Hope things are going well for you, the wife, and army of little ones.
What OS were you running? Fedora? I am having so much trouble installing APC on Ubuntu 64 bit. And the rackspace ppl told me that right now they offer only 64 bit OSes.
Hello Tarandeep Gill,
I was running Centos 5.3 x86_64. You are correct that they are only offering 64 bit arch. APC installed with no problem.
JG
Wow, this was a long time ago. Anyways I remember that my problem was that I was using XAMPP instead of the php that comes with OS. Once I switched to the OS’s php, APC got installed very easily.