私は、アップストリームに 2 つの nginx サーバーと 4 つの専用 php-fpm サーバーを設定しており、それぞれ 2 つのインスタンスで PHP を実行しています。つまり、アップストリームでは、各 php-fpm サーバーにポート 9000 と 9001 を持つ 8 つのインスタンスを指定しています。
時々、nginx がポート 9000 および 9001 で php-fpm に接続できず、nginx からポート 9000 または 9001 で php-fpm サーバーに telnet を実行しても接続されないことがあります。
ネットワーク接続の問題かサーバーの問題かを識別するには、nginx と php-fpm でどのようなログを有効にする必要がありますか。
ご協力いただければ幸いです。
ありがとう
答え1
php-fpm が 127.0.0.1 のみをリッスンし、他のサーバーからの接続を受け入れない可能性があります。(root として) 'netstat -tulnp' を実行し、php-fpm がリッスンするポート/アドレスを確認する必要があります。
答え2
コメントから、4つのことが思い浮かびます。
- ルーティング - ネットワーク内の 2 つのノードが相互に接続できるようにします。traceroute、arp、arping などのネットワーク ツールを使用して確認します (arp はノードが同じであることを確認します)。
- 間に、上記のポートをブロックするファイアウォールまたはセキュリティ ポリシーがありますか。
- サーバーは、RHEL/CentOS/Fedora または SELinux を有効にするその他のバージョンを実行していますか? そうである場合は、それを無効にして試してください。 次のコマンドを実行すると、SElinux のステータスが表示され、必要に応じて許可されます。 SElinux のステータスを確認する:
getenforce
またはsestatus | grep -i mode
。 強制する場合は、許可します:setenforce 0
。 ステータスを再度確認します:getenforce
。 - 両方のサーバーで IPtables を確認します。iptables
iptables -nL
が有効になっていて、これらのポートを許可しているかどうかがリストされます。現在のルールを保存し、フラッシュして、iptables を当面停止するには、次の手順を実行できます。/etc/init.d/iptables 保存
iptables -F
/etc/init.d/iptables 停止
答え3
これが発生すると、Php-fpm の子プロセスが不足している可能性があります。プール ログでエラーを確認してください。これは通常、トラフィックの多い環境で PHP クエリを長時間実行した場合に発生します。