つるながの綴り方

ITインフラ系のネタやTips、趣味としているカーライフなどを中心に日頃メモしておきたいことをしたためています。

Nginx+PHP-FPMでチューニング

Nginx+PHP-FPMをUNIXドメインソケットで連携しているような環境下で。
Apache Bench(ab)で同時コネクションを180あたりにあげると、PHP-FPMが以下のようなログを吐いて、リクエストに失敗(Non-20x)する割合が高くなる。

2015/04/28 14:06:28 [error] 39901#0: *200005 connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: XXXXX, server: , request: "GET /XXXX.json?XXXXX= HTTP/1.0", upstream: "fastcgi://unix:/var/run/php-fpm.sock:", host: "XXXX"


とった対策として、PHP-FPMの設定ファイル「/etc/php-fpm.d/www.conf」(CentOSでパッケージ使用の場合)にて

listen.backlog = -1

次にOSのバックログの値を引き上げる

# sysctl -w net.core.somaxconn=1024

恒久対策させるには「/etc/sysctl.conf」に追加

net.core.somaxconn = 1024

その後リロード

# sysctl -p

完了後、NginxとPHP-FPMを再起動。
再びabで計測したところ、エラーは出なくなり、リクエストの成功率も100%になりました。