Rackspace Performance Cloud benchmarking on eZ Publish
Rackspace recently released their newest generation of cloud servers, called Performance Cloud Servers. Unlike previous new releases, they've made a compelling case to upgrade existing cloud servers, as the "Performance Cloud" servers are cheaper, more powerful, and they use SSD storage. We decided to run some performance tests on an existing eZ Publish site, and saw between a 10-100% performance increase under high loads.
Here is a breakdown of the main differences between the older Rackspace Cloud servers and their Performance Cloud servers at the 8GB server type:
Older Rackspace Cloud
Rackspace Performance Cloud
320GB (single disk)
40GB SSD system disk + 80GB SSD data disk
150Mb/s public; 300Mbps internal
Price, unmanaged account
48 cents per hour (~$345 per month)
32 cents per hour (~$230 per month)
Our eZ Publish example site runs eZ Publish 4.3 (yes, it's past due for an upgrade!) in a clustered environment where we have multiple front-end web servers using the Rackspace Cloud, and dedicated servers for the database and the shared file system. The web servers use Apache 2.2 and PHP 5.3.27.
For our performance tests, we used Apache Bench also known as "ab". See this article for some more eZ Publish examples that use ab. There are many other performance testing tools that support more realistic testing scenarios, but ab is a simple command line tool that is perfect for benchmarking our example site.
With ab, we used 3 parameters: number of concurrent requests, number of total requests, and URL to run our tests. We focused our comparisons exclusively on the "requests per second" result.
Concurrency of 4
Since the older cloud servers have 4 CPUs, we started with this command on the homepage to simulate 500 requests with a concurrency of 4:
ab -n 500 -c 10 http://localhost/
Old server: 68.04 requests/second
New server: 76.45 requests/second
We then ran the same command on the Administration Interface login screen, which is significantly lighter but still includes 13 templates:
Old server: 111.57 req/s
New server: 123.76 req/s
Concurrency of 10
We then increased the concurrency and the new server really started to separate.
Here are the results on the homepage:
Old server: 93.00 req/s
New server: 165.78 req/s
Here are the results on the Administration Interface login screen:
Old server: 139.76 req/s
New server: 280.79 req/s
We tested a few more different types of pages and loads, and could have tested a lot more. All of the results for what we did run were encouraging.
Varnish says eat my dust
For high traffic scenarios, we strongly recommend looking at Varnish. On this particular site, when we ran the same tests as above on the homepage, the results showed almost no difference between servers, but the raw numbers with Varnish speak for themselves (and could probably be even better):
Old server: 3,350.08 req/s
New server: 3,394.55 req/s