次の記事でのデータをもとに比較します。
※ ab - Apache HTTP server benchmarking tool
http://www.apache.jp/manual/programs/ab.html
同時発行数を100リクエスト、10000回のアクセスを実行。
$ ab -n 10000 -c 100
DBへのアクセスはせず、「Hello, world.」を返すぐらいだけのものでベンチマークをとります。
abコマンド実行中にtopコマンドでメモリの使用状況を確認。
◆メモリ(1プロセスあたり)
Ruby on Rails + mod_rails (mod_passenger)Mem: 256400k total, 253792k used, 2608k free, 540k buffers
Swap: 524280k total, 18708k used, 505572k free, 21388k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3041 suzu 25 0 45680 31m 1584 R 10.9 12.5 0:23.41 ruby
3055 apache 15 0 12988 1888 1288 S 0.4 0.7 0:00.85 httpd
Django + mod_python
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4207 apache 15 0 22408 14m 2272 S 8.0 5.6 0:03.64 httpd
Django + mod_wsgi
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3019 apache 15 0 18072 10m 2284 S 7.0 4.0 0:05.13 httpd
Pylons + mod_wsgi
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2915 apache 19 0 23920 14m 2568 R 0.0 5.7 0:07.15 httpd
◇結果
Ruby on Rails + mod_rails だけ、Swapを使ってしまいました。また、Apacheのプロセスとは別に、Rubyのプロセスも必要で、メモリも消費するようにみえます。
一番メモリを消費しないのは、
Django + mod_wsgi
でした。
◆処理速度
Ruby on Rails + mod_rails (mod_passenger)Requests per second: 175.59 [#/sec] (mean)
Django + mod_python
Requests per second: 576.02 [#/sec] (mean)
Django + mod_wsgi
Requests per second: 854.67 [#/sec] (mean)
Pylons + mod_wsgi
Requests per second: 380.65 [#/sec] (mean)
◇結果
秒間あたりの処理能力が一番よいのはDjango + mod_wsgi
であり、最下位が
Ruby on Rails + mod_rails
でありました。今回の検証では、Ruby on Rails + mod_rails は、Swapを使用したため
速度比較としては、平等ではないかもしれません。
コメントする