Passengerとunicornのメモリ使用量の違いとパフォーマンスの違い
別々のポートで同じ2ワーカーで立ちあげてみました。
面白いので、比較してみます。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 1001 1907 1.1 9.4 262384 47308 ? Sl 04:54 0:07 Passenger ApplicationSpawner: /xxx 1001 1913 0.4 10.3 269452 52096 ? Sl 04:54 0:02 Rack: /xxx 1001 2381 0.7 9.8 267028 49308 ? Sl 05:02 0:01 Rack: /xxx 1001 2434 6.4 10.1 199440 50796 ? Sl 05:03 0:06 unicorn_rails master -c config/unicorn.conf -D 1001 2484 0.3 9.5 199836 47984 ? Sl 05:03 0:00 unicorn_rails worker[0] -c config/unicorn.conf -D 1001 2487 0.3 9.5 199836 47984 ? Sl 05:03 0:00 unicorn_rails worker[1] -c config/unicorn.conf -D
該当部分のみを表示してみました。
これで見てみると、、
RSS(使っている物理メモリ)は
- passengerが148,712kb
- unicornが146,764kb
とあまり変わりません。
でも、仮想メモリを含めると、
- passengerが798,864kb
- unicornが599,112kb
と圧勝でした。さて、ベンチマークとってみましょうか。
Passengerは、
Requests per second: 8.72 [#/sec] (mean)
こんくらい。
unicornだと、
Requests per second: 2.05 [#/sec] (mean)
全然だめじゃん。
もしかして、Workerが少ない場合はPassengerの圧勝かも。
ワーカーを8に増やしてみて、
Requests per second: 7.31 [#/sec] (mean)
ってな感じになりましたが、
passengerの2ワーカーの記録 8.72 に勝てません。
passengerの方がCPUを使いこなす効率がよくて、
ワーカーが少ない場合はpassengerが圧勝でした。
メモリをジャブジャブ使えてCPUが非力な場合は
unicornもいいのかもしれません。