laravel nginx + php fpm、nginx unit、roadrunner octane のベンチマーク
https://zenn.dev/yamayuski/articles/96478cb4fe1573 https://github.com/il-m-yamagishi/laravel-loadtest https://habr.com/en/post/646397/ 上記で確認できる。 自分で試してみた、かなり雑なレ
https://zenn.dev/yamayuski/articles/96478cb4fe1573
https://github.com/il-m-yamagishi/laravel-loadtest
https://habr.com/en/post/646397/
上記で確認できる。
自分で試してみた、かなり雑なレポート。docker setting 関連の変更をあれこれ試しているうちに、nginx、php-fpm が確実に速くなったように感じたので、途中でやめられず、結局ここまで来てしまった。
午後2時に始めて、朝5時に終わったので、15時間もこんなことをしていた……
User 5000、request リクエスト
ただし!!! サーバーのDNSはcloudfrontになっていて、サーバーのコンピューターは自分で動かし(Threadripper 3990、256ギガ)、リクエストも自分で送った。(自分から自分にリクエストを送るので、自分がリクエストを送る帯域の上限に引っかかり、正確ではないかもしれない)
でも、とにかく試してみた。
nginx worker が持ちこたえられないと、nginx は必ず落ちる。
ただし、nginx worker を増やしても、php-fpm のレイテンシは増え続ける。
また、リクエストの失敗もちょくちょく混じっている。
どこでは良い、どこでは良くないと言われていたので、使ってみた。
うわ……これは一体どういうことだ。nginx unit の性能は、信じられないほど速い。octane を設定したときと同じくらいの速度が出た。本当にすごい……設定さえきちんとすれば、Nginx Unit でも十分に対応できそうだった。
でも、自分の設定スキルが足りず、Nginx Unit は完全に落ちてしまい、それ以上復活できなかった。
(たぶんこの部分は設定スキル不足だと思う。きちんと設定さえすれば、Nginx Unit は落ちないはずだと思うのに、どうしてみんなNginx Unitを使わないんだろう?うーん……PHPも8.1.1で止まっている。今は8.1.16なのに。(もちろん、自分でdockerfileのイメージを作ればいいのだろうけど、面倒))

前回の投稿ではoctaneに否定的だった気がするけれど、今回は違う。絶対におすすめだ。コードの書き方が少し変わるものの、デメリットよりメリットのほうが本当に多いと思う。
まず、落ちない。ただし、レイテンシは増加する。1〜3秒まで増えた気がする。

そして重要なのは、あまり多くは受け付けられないこと。RPSを……
最初はRoadrunnerだけを追加するほうがずっと良いと思っていたけれど、それは間違いだった。
もちろん、自分の設定が間違っている可能性もある。

これは最初の結果だ。RPSが1846も出ているにもかかわらず、問題なく、とても速く動いていた。
これを見てびっくりして、もう一度実行してみたところ……

結果は同じだった。
おそらく後半にRPSが減っているのは、ネットワーク帯域の上限がInput、Outputの両方で限界に達したからだと思う。
とはいえ、Nginx + roadrunner の設定は、roadrunner単体の設定よりもRPSの増加が速く、より多くのリクエストを受け付けられ、受け付けている間もより短いms値を示した。
laravel octane を使うのは本当におすすめだ。ものすごい数のリクエストが来ても、サーバーは絶対に落ちない。
roadrunner に直接つなぐのではなく、手前にあるnginx workerを通して接続しよう。そのほうがより多くのリクエストを受け付けられて、より速く応答できる。
このテストは主観的なものです。
また、requestを送るコンピューターのネットワークも自分のコンピューターで、サーバーのコンピューターも自分のものだったので、結果が間違っている可能性もあります。
自分のコンピューター -> cloudfront -> サーバーのコンピューター
15時間、非常に貴重な経験ができた……でも、やらなければならない作業があるのに…… :(