
我在上游配置了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
從評論中,我想到了四件事。
- 路由 - 是網路中能夠相互連接的兩個節點。使用traceroute、arp、arping等聯網工具進行檢查(arp確保節點相同)。
- 之間是否存在防火牆或安全策略來封鎖所述連接埠。
- 您的伺服器是否執行 RHEL/CentOS/Fedora 或任何其他支援 SELinux 的版本?如果是,您可能需要停用它並嘗試。以下命令將為您提供 SElinux 的狀態,並根據您的需求將其設為許可狀態。檢查 SElinux 的狀態:
getenforce
或sestatus | grep -i mode
。如果強制執行,則使其成為寬鬆的:setenforce 0
。再次檢查狀態:getenforce
. - 檢查兩台伺服器上的 IPtables。
iptables -nL
將列出 iptables 是否已啟用並允許這些連接埠。您可以執行以下操作來儲存目前規則、刷新它並暫時停止 iptables。/etc/init.d/iptables save
iptables -F
/etc/init.d/iptables stop
答案3
發生這種情況時,Php-fpm 可能已耗盡子進程,請檢查池日誌中是否有錯誤。如果您在高流量環境中長時間執行 PHP 查詢,通常會發生這種情況。