This was a quick test as I was playing around with Nginx and CakePHP 2.0.
The numbers were interesting, however.
What I did:
– Setup a virtual box with Windows host
– OS: Ubuntu (Natty)
– PHP 5.3.8
– CakePHP 2.0-beta (freshly pulled)
– apache2 (2.2.17)
– nginx (1.0.5)
Nothing was tweaked or tuned. I’ve setup both servers to use virtual hosts and simply load the default CakePHP page (i.e. fresh install).
There is no app behind any of this, but we are touching pieces of the framework and some PHP logic.
(Comparison is about the web servers anyway)…
Anyway, start apache and run:
So we’ll use apache benchmark to beat the localhost a little (for 30 seconds) and get some numbers:
Benchmarking localhost (be patient) Finished 839 requests Server Software: Apache/2.2.17 Server Hostname: localhost Server Port: 80 Document Path: / Document Length: 4481 bytes Concurrency Level: 10 Time taken for tests: 30.009 seconds Complete requests: 839 Failed requests: 0 Write errors: 0 Keep-Alive requests: 839 Total transferred: 4109432 bytes HTML transferred: 3759559 bytes Requests per second: 27.96 [#/sec] (mean) Time per request: 357.679 [ms] (mean) Time per request: 35.768 [ms] (mean, across all concurrent requests) Transfer rate: 133.73 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.7 0 7 Processing: 203 355 121.7 352 2931 Waiting: 202 355 121.7 352 2931 Total: 203 355 122.0 352 2938 Percentage of the requests served within a certain time (ms) 50% 352 66% 360 75% 365 80% 368 90% 377 95% 385 98% 393 99% 404 100% 2938 (longest request)
Now, shutdown apache, start nginx and repeat the above test:
Benchmarking localhost (be patient) Finished 4451 requests Server Software: nginx/1.0.5 Server Hostname: localhost Server Port: 80 Document Path: / Document Length: 4481 bytes Concurrency Level: 10 Time taken for tests: 30.001 seconds Complete requests: 4451 Failed requests: 0 Write errors: 0 Keep-Alive requests: 0 Total transferred: 21367368 bytes HTML transferred: 19972014 bytes Requests per second: 148.36 [#/sec] (mean) Time per request: 67.403 [ms] (mean) Time per request: 6.740 [ms] (mean, across all concurrent requests) Transfer rate: 695.53 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.3 0 7 Processing: 18 67 11.6 67 204 Waiting: 5 40 22.1 42 198 Total: 18 67 11.6 67 204 Percentage of the requests served within a certain time (ms) 50% 67 66% 71 75% 73 80% 75 90% 80 95% 85 98% 93 99% 102 100% 204 (longest request)
OK, let’s see:
Total requests served: Apache – 839, Nginx – 4451
Requests per second: Apache – 27.96, Nginx – 148.36
The other numbers are quite unbelievable as well.
What’s the point of all this? Tutorial on CakePHP 2.0 + Nginx is coming soon here ;)