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 ;)