メルカリさんにてPHP BLT #2が開催されましたので、
LT発表者の一人として参加してきました。
発表内容
PHP Advent Calendar 2015で書いた内容が怪しかったのでベンチマークをやり直したという話です。
取りなおしたベンチマークの詳細
NginxとPHP-FPM | Apache2.4(prefork)とmod_php | Apache2.4(prefork)とmod_phpとNginx | Apache2.4(event)とPHP-FPM | |
---|---|---|---|---|
Transaction | 9858 | 9466 | 9802 | 10000 |
Availavility(%) | 98.58 | 94.66 | 98.02 | 100.00 |
Elapsed time(sec) | 37.14 | 221.93 | 42.18 | 56.53 |
Data Transferred(MB) | 592.28 | 563.09 | 591.26 | 555.97 |
Response Time(sec) | 0.23 | 4.08 | 0.34 | 0.74 |
Transaction rate(trans/sec) | 265.43 | 42.65 | 232.39 | 176.90 |
Throughput(MB/sec) | 15.95 | 2.54 | 14.02 | 9.84 |
Concurrency | 61.10 | 174.18 | 79.15 | 130.16 |
Successful Transactions | 9858 | 9466 | 9802 | 10000 |
Failed Transactions | 142 | 534 | 198 | 0 |
Longest Transaction | 5.31 | 173.24 | 7.08 | 8.98 |
Shortest transaction | 0.00 | 0.00 | 0.00 | 0.00 |
再度の考察
Apache+mod_phpは、単純にリクエスト数が多くなった時の性能劣化が一番早かったです。
前回の考察でも述べた通りで、Apacheの各リクエストがmod_phpを読み込んで動いているため、単純にリソースの消費が激しいです。
実際のVM内ではApacheが落ちてしまっていました。
それ以外の構成は、だいたい同じオーダーの性能でしたがNginxに静的ファイルを処理させる構成はやはり良いですね。
Availabiltyが100%なのは、Apache(mpm_event)だけですが、これは処理性能がNginxに比べて少し遅かったためファイルディスクリプタがギリギリ枯渇しなかったためです。
逆にいうと、Nginxは数を大量にさばけるので、きちんとOS側の設定もしないと勿体無いですね。