Nginx 和 php-fpm 通訊問題

Nginx 和 php-fpm 通訊問題

我在上游配置了2 個nginx 伺服器和4 個專用php-fpm 伺服器,用於執行PHP,每個實例有2 個實例,這意味著在上游我為每個php-fpm 伺服器提供了8 個連接埠為9000 和9001 的實例。

有時會發生什麼情況,nginx 無法在連接埠 9000 和 9001 上連接 php-fpm,甚至當我在連接埠 9000 或 9001 上從 nginx 遠端登入 php-fpm 伺服器時,它也無法連接。

應在 nginx 和 php-fpm 上啟用哪種日誌來識別問題(無論是網路連線問題還是伺服器問題)。

任何幫助將不勝感激。

謝謝

答案1

php-fpm 可能只會偵聽 127.0.0.1 en 不接受來自其他伺服器的連接,您應該運行(以 root 身份)“netstat -tulnp”並查看 php-fpm 偵聽的連接埠/位址。

答案2

從評論中,我想到了四件事。

  1. 路由 - 是網路中能夠相互連接的兩個節點。使用traceroute、arp、arping等聯網工具進行檢查(arp確保節點相同)。
  2. 之間是否存在防火牆或安全策略來封鎖所述連接埠。
  3. 您的伺服器是否執行 RHEL/CentOS/Fedora 或任何其他支援 SELinux 的版本?如果是,您可能需要停用它並嘗試。以下命令將為您提供 SElinux 的狀態,並根據您的需求將其設為許可狀態。檢查 SElinux 的狀態:getenforcesestatus | grep -i mode。如果強制執行,則使其成為寬鬆的:setenforce 0。再次檢查狀態:getenforce.
  4. 檢查兩台伺服器上的 IPtables。 iptables -nL將列出 iptables 是否已啟用並允許這些連接埠。您可以執行以下操作來儲存目前規則、刷新它並暫時停止 iptables。
    /etc/init.d/iptables save 
    iptables -F
    /etc/init.d/iptables stop

答案3

發生這種情況時,Php-fpm 可能已耗盡子進程,請檢查池日誌中是否有錯誤。如果您在高流量環境中長時間執行 PHP 查詢,通常會發生這種情況。

相關內容