(続) apacheとnginxのベンチーマーク

apacheとnginxでベンチマーク
このエントリの続きとして、
apacheとnginxのベンチマークをさくらVPSでもやってみた。(静的ファイルのみ)

  • 環境
    • さくらVPS -> 512MBのプラン(月額980円のやつ)
    • OS -> Debian lenny
    • nginxのphp -> spawn-fcgi

自宅からサーバにたいしてabしても結果が変わらなかったので、自宅マシンがしょぼい、もしくはサーバの上流でNWしぼられてるんだと解釈して、サーバにログインして、localhostにむけてabした結果


Concurrency Level: 1000
Time taken for tests: 0.848 seconds
Complete requests: 3000
Failed requests: 0
Write errors: 0
Total transferred: 1030900 bytes
HTML transferred: 31720 bytes
Requests per second: 3536.44 [#/sec] (mean)
Time per request: 282.770 [ms] (mean)
Time per request: 0.283 [ms] (mean, across all concurrent requests)
Transfer rate: 1186.76 [Kbytes/sec] received

    • nginx


Concurrency Level: 1000
Time taken for tests: 0.297 seconds
Complete requests: 3000
Failed requests: 0
Write errors: 0
Total transferred: 666000 bytes
HTML transferred: 36000 bytes
Requests per second: 10100.43 [#/sec] (mean)
Time per request: 99.006 [ms] (mean)
Time per request: 0.099 [ms] (mean, across all concurrent requests)
Transfer rate: 2189.74 [Kbytes/sec] received

echoするだけのphp


Concurrency Level: 1000
Time taken for tests: 1.243 seconds
Complete requests: 3000
Failed requests: 0
Write errors: 0
Total transferred: 783360 bytes
HTML transferred: 12288 bytes
Requests per second: 2413.52 [#/sec] (mean)
Time per request: 414.332 [ms] (mean)
Time per request: 0.414 [ms] (mean, across all concurrent requests)
Transfer rate: 615.45 [Kbytes/sec] received

静的ファイルと比べて2/3ほどのレスポンス

    • nginx


Concurrency Level: 1000
Time taken for tests: 1.421 seconds
Complete requests: 3000
Failed requests: 0
Write errors: 0
Total transferred: 489000 bytes
HTML transferred: 12000 bytes
Requests per second: 2110.57 [#/sec] (mean)
Time per request: 473.806 [ms] (mean)
Time per request: 0.474 [ms] (mean, across all concurrent requests)
Transfer rate: 335.96 [Kbytes/sec] received

apacheと遜色ないレベル

400ミリsec sleepしたあとechoするphp


Concurrency Level: 1000
Time taken for tests: 8.999 seconds
Complete requests: 3000
Failed requests: 0
Write errors: 0
Total transferred: 960000 bytes
HTML transferred: 204000 bytes
Requests per second: 333.36 [#/sec] (mean)
Time per request: 2999.746 [ms] (mean)
Time per request: 3.000 [ms] (mean, across all concurrent requests)
Transfer rate: 104.18 [Kbytes/sec] received

    • nginx


Concurrency Level: 1000
Time taken for tests: 3.555 seconds
Complete requests: 3000
Failed requests: 801
(Connect: 0, Receive: 0, Length: 801, Exceptions: 0)
Write errors: 0
Non-2xx responses: 2199
Total transferred: 962472 bytes
HTML transferred: 478875 bytes
Requests per second: 843.87 [#/sec] (mean)
Time per request: 1185.013 [ms] (mean)
Time per request: 1.185 [ms] (mean, across all concurrent requests)
Transfer rate: 264.39 [Kbytes/sec] received

nginxがnon-blockingだからか、apacheと比べると数字がいい
failed requestが多いのが気になる

  • 感想
    • 静的ファイルを捌く能力だとapacheよりもnginxが良さそう。
    • サーバの回線が細いとWebサーバの能力使い切る前にNWが、、
    • 簡単なphpを動かすくらいだとapacheと性能変わらない
      • fast-cgiのプロセス数とかもいろいろチューニングは必要そう
    • 遅いphpを使用した場合の性能劣化がapacheよりも少ないので、ブロッキングする処理をするphpとかをたくさんhostするには良さそう
      • ただ、failed requestが多いのが気になる