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%になりました。