Nginx と php-fpm の通信の問題

Nginx と php-fpm の通信の問題

私は、アップストリームに 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つのことが思い浮かびます。

  1. ルーティング - ネットワーク内の 2 つのノードが相互に接続できるようにします。traceroute、arp、arping などのネットワーク ツールを使用して確認します (arp はノードが同じであることを確認します)。
  2. 間に、上記のポートをブロックするファイアウォールまたはセキュリティ ポリシーがありますか。
  3. サーバーは、RHEL/CentOS/Fedora または SELinux を有効にするその他のバージョンを実行していますか? そうである場合は、それを無効にして試してください。 次のコマンドを実行すると、SElinux のステータスが表示され、必要に応じて許可されます。 SElinux のステータスを確認する:getenforceまたはsestatus | grep -i mode。 強制する場合は、許可します: setenforce 0。 ステータスを再度確認します: getenforce
  4. 両方のサーバーで IPtables を確認します。iptables iptables -nLが有効になっていて、これらのポートを許可しているかどうかがリストされます。現在のルールを保存し、フラッシュして、iptables を当面停止するには、次の手順を実行できます。
    /etc/init.d/iptables 保存
    iptables -F
    /etc/init.d/iptables 停止

答え3

これが発生すると、Php-fpm の子プロセスが不足している可能性があります。プール ログでエラーを確認してください。これは通常、トラフィックの多い環境で PHP クエリを長時間実行した場合に発生します。

関連情報