Test de quelques serveurs d'application pour RubyOnRails (Mongrel, Thin, Unicorn, Webrick, Passenger)

Bon je vous mets le fichier texte en vrac, j'ai dû faire ce test il y a 6 mois. Il manque Puma et Rainbows (qui fonctionnent mieux avec Rubinius ou jRuby). Visiblement le meilleur couple c'est Unicorn + Nginx.

# Webrick
RAILS_ENV=production rails s
siege -d1 -r10 -c50 https://192.168.1.17:3000/admin/products
Transactions:                      500 hits
Availability:                 100.00 %
Elapsed time:                  43.96 secs
Data transferred:              14.90 MB
Response time:                  3.55 secs
Transaction rate:              11.37 trans/sec
Throughput:                     0.34 MB/sec
Concurrency:                   40.41
Successful transactions:         500
Failed transactions:               0
Longest transaction:            7.52
Shortest transaction:           0.88
# Mongrel 1.2.0.pre2
ajout de mongrel dans le gemfile
RAILS_ENV=production rails s
siege -d1 -r10 -c50 https://192.168.1.17:3000/admin/products
Transactions:                      500 hits
Availability:                 100.00 %
Elapsed time:                  42.70 secs
Data transferred:              14.90 MB
Response time:                  3.30 secs
Transaction rate:              11.71 trans/sec
Throughput:                     0.35 MB/sec
Concurrency:                   38.69
Successful transactions:         500
Failed transactions:               0
Longest transaction:           17.06
Shortest transaction:           0.06
# Thin 1.3.1
ajout de thin dans le Gemfile puis
bundle exec thin -e production start
siege -d1 -r10 -c50 https://192.168.1.17:3000/admin/products
Transactions:                      500 hits
Availability:                 100.00 %
Elapsed time:                  39.92 secs
Data transferred:              14.90 MB
Response time:                  3.29 secs
Transaction rate:              12.53 trans/sec
Throughput:                     0.37 MB/sec
Concurrency:                   41.22
Successful transactions:         500
Failed transactions:               0
Longest transaction:            4.42
Shortest transaction:           0.07
# Unicorn 4.2.0
ajout de Unicorn dans le Gemfile puis
bundle exec unicorn -E production -p 3000
siege -d1 -r10 -c50 https://192.168.1.17:3000/admin/products
Transactions:                      500 hits
Availability:                 100.00 %
Elapsed time:                  52.82 secs
Data transferred:              14.90 MB
Response time:                  4.52 secs
Transaction rate:               9.47 trans/sec
Throughput:                     0.28 MB/sec
Concurrency:                   42.76
Successful transactions:         500
Failed transactions:               0
Longest transaction:           17.07
Shortest transaction:           0.29
# Passenger 3.0.11 + nginx (installation automatique)
installation de passenger + nginx
sudo /opt/nginx/sbin/nginx
server {
listen 3000;
server_name 192.168.1.17;
root /path_to_myapp/public;   # <--- be sure to point to 'public'!
passenger_enabled on;
}
siege -d1 -r10 -c50 https://192.168.1.17:3000/admin/products
Transactions:                      500 hits
Availability:                 100.00 %
Elapsed time:                  30.69 secs
Data transferred:              14.90 MB
Response time:                  2.21 secs
Transaction rate:              16.29 trans/sec
Throughput:                     0.49 MB/sec
Concurrency:                   36.07
Successful transactions:         500
Failed transactions:               0
Longest transaction:            9.46
Shortest transaction:           0.11
# Passenger 3.0.11 + nginx (installation automatique) avec worker_processes  2; dans nginx.conf
siege -d1 -r10 -c50 https://192.168.1.17:3000/admin/products
Transactions:                      500 hits
Availability:                 100.00 %
Elapsed time:                  31.76 secs
Data transferred:              14.90 MB
Response time:                  2.30 secs
Transaction rate:              15.74 trans/sec
Throughput:                     0.47 MB/sec
Concurrency:                   36.13
Successful transactions:         500
Failed transactions:               0
Longest transaction:           10.18
Shortest transaction:           0.07
# Unicorn (worker_processes 2) + nginx (worker_processes 1)
sudo /opt/nginx/sbin/nginx
sudo bundle exec unicorn_rails -c /home/riven/myapp/config/unicorn2.rb -E production -D
Transactions:                  500 hits
Availability:                 100.00 %
Elapsed time:                  23.42 secs
Data transferred:              14.88 MB
Response time:                  1.64 secs
Transaction rate:              21.35 trans/sec
Throughput:                     0.64 MB/sec
Concurrency:                   34.92
Successful transactions:         500
Failed transactions:               0
Longest transaction:            2.02
Shortest transaction:           0.11
# Unicorn (worker_processes 2) + nginx (worker_processes 2)
sudo /opt/nginx/sbin/nginx
sudo bundle exec unicorn_rails -c /home/riven/myapp/config/unicorn2.rb -E production -D
Transactions:                  500 hits
Availability:                 100.00 %
Elapsed time:                  23.57 secs
Data transferred:              14.88 MB
Response time:                  1.61 secs
Transaction rate:              21.21 trans/sec
Throughput:                     0.63 MB/sec
Concurrency:                   34.06
Successful transactions:         500
Failed transactions:               0
Longest transaction:            2.01
Shortest transaction:           0.06
# Unicorn (worker_processes 2) + nginx (worker_processes 4)
sudo /opt/nginx/sbin/nginx
sudo bundle exec unicorn_rails -c /home/riven/myapp/config/unicorn2.rb -E production -D
Transactions:                  500 hits
Availability:                 100.00 %
Elapsed time:                  23.21 secs
Data transferred:              14.88 MB
Response time:                  1.59 secs
Transaction rate:              21.54 trans/sec
Throughput:                     0.64 MB/sec
Concurrency:                   34.23
Successful transactions:         500
Failed transactions:               0
Longest transaction:            1.99
Shortest transaction:           0.07
# Unicorn (worker_processes 6) + nginx (worker_processes 2)
sudo /opt/nginx/sbin/nginx
sudo bundle exec unicorn_rails -c /home/riven/myapp/config/unicorn2.rb -E production -D
Transactions:                  500 hits
Availability:                 100.00 %
Elapsed time:                  25.73 secs
Data transferred:              14.88 MB
Response time:                  1.90 secs
Transaction rate:              19.43 trans/sec
Throughput:                     0.58 MB/sec
Concurrency:                   36.91
Successful transactions:         500
Failed transactions:               0
Longest transaction:            2.59
Shortest transaction:           0.08
# Unicorn (worker_processes 12) + nginx (worker_processes 2)
sudo /opt/nginx/sbin/nginx
sudo bundle exec unicorn_rails -c /home/riven/myapp/config/unicorn2.rb -E production -D
Transactions:                  500 hits
Availability:                 100.00 %
Elapsed time:                  27.33 secs
Data transferred:              14.88 MB
Response time:                  2.04 secs
Transaction rate:              18.29 trans/sec
Throughput:                     0.54 MB/sec
Concurrency:                   37.35
Successful transactions:         500
Failed transactions:               0
Longest transaction:            3.54
Shortest transaction:           0.06