Here is the configuration :
- Cyril is running a Typo on 7 Nginx instances along with 3 Thin application server.
- I’m running a Typo on an Apache with mod_rails.
- Wordpress is running on Apache with mod_php 5 and is jailed for security purpose. PHP configuration file was finely tuned for production mode.
All tests were done on the same machine : a FreeBSD 2.2ghz dual core with 4GB ram. The application is runing alone during the whole test.
Typo + Nginx
Server Software: nginx/0.5.36
Server Hostname: typosphere.org
Server Port: 80
Document Path: /accounts/login
Document Length: 1751 bytes
Concurrency Level: 10
Time taken for tests: 4.365451 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 2090000 bytes
HTML transferred: 1751000 bytes
Requests per second: 229.07 [#/sec] (mean)
Time per request: 43.655 [ms] (mean)
Time per request: 4.365 [ms] (mean, across all concurrent requests)
Transfer rate: 467.53 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 4 4 4.0 4 35
Processing: 11 38 27.3 30 200
Waiting: 10 37 27.3 30 200
Total: 15 42 27.6 35 204
Wordpress + Apache
Server Software: Apache/2.2.8
Server Hostname: emmanueldetaillac.fr
Server Port: 80
Document Path: /wp-login.php
Document Length: 1895 bytes
Concurrency Level: 10
Time taken for tests: 82.477327 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 2321000 bytes
HTML transferred: 1895000 bytes
Requests per second: 12.12 [#/sec] (mean)
Time per request: 824.773 [ms] (mean)
Time per request: 82.477 [ms] (mean, across all concurrent requests)
Transfer rate: 27.47 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 4 4 0.1 4 6
Processing: 168 818 161.1 815 1516
Waiting: 167 813 160.9 810 1512
Total: 172 822 161.1 819 1520
Typo + Apache + mod_rails + RubyEE
Server Software: Apache
Server Hostname: typosphere.org
Server Port: 80
Document Path: /accounts/login
Document Length: 1751 bytes
Concurrency Level: 10
Time taken for tests: 4.330938 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 2144000 bytes
HTML transferred: 1751000 bytes
Requests per second: 230.90 [#/sec] (mean)
Time per request: 43.309 [ms] (mean)
Time per request: 4.331 [ms] (mean, across all concurrent requests)
Transfer rate: 483.27 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 4 4 0.2 4 6
Processing: 11 38 21.0 33 142
Waiting: 11 36 20.8 31 141
Total: 15 42 21.0 37 146
Who said Apache on Rails was slow ?
Version française
Promis, après ce billet, j’arrête de parler de Ruby on Rails jusqu’à la prochaine release de Typo.
Les disparités matérielles entre Cyril et moi étant trop grandes, j’ai relancé tous les tests sur la même machine.
Suite au déploiement de Ruby Enterprise Edition sur la machine qui héberge ce blog, Cyril Mougel et moi avons décidé d’effectuer un benchmark afin de savoir qui d’Apache + mod_rails ou de Thin + Nginx serait le plus rapide. Pour le fun, j’y ai ajouté un blog Wordpress tournant sur le même serveur que mon Typo.
La configuration utilisée est la suivante :
- Cyril fait tourner son Typo sous 7 instances de Nginx et 3 instances de Thin.
- Je fais tourner mon Typo sur une instance d’Apache avec mod_rails.
- Wordpress tourne sous Apache avec mod_php 5, dans une jail pour des raisons de sécurité. Le fichier de configuration de PHP a été finetuné pour un service de production.
L’ensemble des tests a été fait sur la même machine : un FreeBSD 2.2ghz dual Core avec 4Go de RAM. L’application tourne seule pendant toute la durée du test.
Typo + Nginx
Server Software: nginx/0.5.36
Server Hostname: typosphere.org
Server Port: 80
Document Path: /accounts/login
Document Length: 1751 bytes
Concurrency Level: 10
Time taken for tests: 4.365451 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 2090000 bytes
HTML transferred: 1751000 bytes
Requests per second: 229.07 [#/sec] (mean)
Time per request: 43.655 [ms] (mean)
Time per request: 4.365 [ms] (mean, across all concurrent requests)
Transfer rate: 467.53 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 4 4 4.0 4 35
Processing: 11 38 27.3 30 200
Waiting: 10 37 27.3 30 200
Total: 15 42 27.6 35 204
Wordpress + Apache
Server Software: Apache/2.2.8
Server Hostname: emmanueldetaillac.fr
Server Port: 80
Document Path: /wp-login.php
Document Length: 1895 bytes
Concurrency Level: 10
Time taken for tests: 82.477327 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 2321000 bytes
HTML transferred: 1895000 bytes
Requests per second: 12.12 [#/sec] (mean)
Time per request: 824.773 [ms] (mean)
Time per request: 82.477 [ms] (mean, across all concurrent requests)
Transfer rate: 27.47 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 4 4 0.1 4 6
Processing: 168 818 161.1 815 1516
Waiting: 167 813 160.9 810 1512
Total: 172 822 161.1 819 1520
Typo + Apache + mod_rails + RubyEE
Server Software: Apache
Server Hostname: typosphere.org
Server Port: 80
Document Path: /accounts/login
Document Length: 1751 bytes
Concurrency Level: 10
Time taken for tests: 4.330938 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 2144000 bytes
HTML transferred: 1751000 bytes
Requests per second: 230.90 [#/sec] (mean)
Time per request: 43.309 [ms] (mean)
Time per request: 4.331 [ms] (mean, across all concurrent requests)
Transfer rate: 483.27 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 4 4 0.2 4 6
Processing: 11 38 21.0 33 142
Waiting: 11 36 20.8 31 141
Total: 15 42 21.0 37 146
And the winner is… de peu certes, mais bon, qui a dit qu’Apache était lent sur Rails ?
Semion Sidorenko about 13 hours later:
Ce serait un peu plus parlant avec des graphiques, non ? Plutôt que de scroller sur les résultats en bas, après en haut, après en bas, etc, à moins d’avoir une énorme résolution :)