web-dev-qa-db-ja.com

unix:/var/run/php5-fpm.sockへの接続に失敗しました。セットアップの何が問題になっていますか?

DigitalOceanに2GBのVPSがあり、WordPress 3.9.1でNGINX、php-fpm、unixソケットを使用したDebian 7でホストしています。

先週まで「502不正なゲートウェイ」エラーが表示されるまで、完全に機能していました。ログを確認したところ、次のことがわかりました。

php5-fpmログはpm.max_childrenに到達したことを示し、nginxログは次を示しています。

[エラー] 3239#0:* 15188 unix:/var/run/php5-fpm.sockへのconnect()が失敗しました(11:リソースが一時的に利用不可)、アップストリーム、クライアント:xxx.xxx.xxx.xxx、サーバーへの接続中: my.domain、リクエスト: "POST /xmlrpc.php HTTP/1.0"、アップストリーム: "fastcgi:// unix:/var/run/php5-fpm.sock:"、ホスト: "xxx.xxx.xxx.xxx"

幸運なしに異なる設定で午後を手動で変更しました。変更するたびに常にデーモンを再起動します。

午後の設定は次のとおりです。

pm = dynamic 
pm.max_children = 100 
pm.start_servers = 10 
pm.min_spare_servers = 10 
pm.max_spare_servers = 10 
pm.max_requests = 200

www.confにはlisten = /var/run/php5-fpm.sock有効。

同様の経験をお持ちですか?

18
vsapountzis

最初の問題は、100個のmax_childrenを指定していることです。これは、2GBでは非常に高い値です。私は25人の子供にそれを落とすでしょう。セットアップのためにphp-fpm構成を最適化する方法については、こちらの私の投稿を参照してください。

警告:[プールwww]は忙しいようです(pm.start_servers、またはpm.min/max_spare_serversを増やす必要があるかもしれません)、スポーン

また、UNIXソケットを使用すると、TCP/IPオーバーヘッドなしで直接ネットワークアクセスが提供されるため、わずかに高速になります。欠点は、TCP/IPほどスケーラブルではありません。ソケットが枯渇すると、Nginxは502エラーをスローします。そのような場合、OS設定を微調整して、より大きな接続プールに対応するか、単に切り替えてTCP/IPに切り替えることができます。

Fastcgi confの変更:

fastcgi_pass unix:/var/run/php5-fpm.sock;

に:

fastcgi_pass 127.0.0.1:9000;

ポート9000はphp-fpmで設定されたデフォルトのポートであることに注意してください。別のポートでリッスンするようにphp-fpmを変更した場合は、その値で9000を交換します。 php-fpmとnginxの両方を必ず再起動してください。

これで、すべてを実行しても機能しない場合は、free -mが高いメモリ使用量を返すので、RAMを追加しますサーバーに。

22
Rijndael