Nginx和php-fpm的沟通问题

我有2个nginx服务器和4个专用的php-fpm服务器在上游configuration执行PHP 2个实例在上游我已经给每个php-fpm服务器的端口9000和9001 8个实例。

有时会发生什么情况nginx无法连接端口9000和9001的php-fpm,甚至当我从端口9000或9001的nginx到php-fpm服务器telnet时,它不能连接。

在nginx和php-fpm上应该启用什么types的日志来识别问题,以解决networking连接问题或服务器问题。

任何帮助将不胜感激。

谢谢

php-fpm可能只在127.0.0.1上监听,而不接受来自其他服务器的连接,你应该运行(以root身份)“netstat -tulnp”并查看php-fpm监听的端口/地址。

从评论中,我想起了四件事情。

  1. 路由 – 是networking中的两个节点,它们能够相互连接。 使用traceroute,arp,arping等networking工具进行检查(arp保证节点是一样的)。
  2. 两者之间是否存在防火墙或安全策略会阻塞所述端口。
  3. 你的服务器是运行RHEL / CentOS / Fedora还是其他任何启用SELinux的风格? 如果是的话,你可能想禁用,并尝试。 下面的命令会给你SElinux的状态,如果你想这样的话可以让它放行。 检查SElinux的状态: getenforce OR sestatus | grep -i mode sestatus | grep -i mode 。 使其宽容,如果执行: setenforce 0 。 再次检查状态: getenforce
  4. 检查两台服务器的IPtables。 iptables -nL会列出iptables是否启用并允许这些端口。 您可以执行以下操作来保存当前的规则,刷新它,并暂时停止iptables。
      /etc/init.d/iptables保存 
    iptables -F
    /etc/init.d/iptables停止

当发生这种情况时,Php-fpm可能已经用完了subprocess,请检查池日志是否有错误。 如果您在高stream量环境中长时间运行PHP查询,通常会发生这种情况。