Kommunikationsproblem zwischen Nginx und PHP-FPM

Kommunikationsproblem zwischen Nginx und PHP-FPM

Ich habe 2 Nginx-Server und 4 dedizierte PHP-FPM-Server im Upstream für die Ausführung von PHP mit jeweils 2 Instanzen konfiguriert. Das bedeutet, dass ich im Upstream jedem PHP-FPM-Server 8 Instanzen mit den Ports 9000 und 9001 zugewiesen habe.

Manchmal kann Nginx keine Verbindung zu PHP-FPM über Port 9000 und 9001 herstellen, und selbst wenn ich von Nginx aus eine Telnet-Verbindung zum PHP-FPM-Server über Port 9000 oder 9001 herstelle, kommt keine Verbindung zustande.

Welche Art von Protokoll sollte auf Nginx und PHP-FPM aktiviert werden, um das Problem zu identifizieren, unabhängig davon, ob es sich um ein Netzwerkkonnektivitäts- oder Serverproblem handelt.

Für jede Hilfe wäre ich sehr dankbar.

Danke

Antwort1

Es ist möglich, dass php-fpm nur auf 127.0.0.1 lauscht und keine Verbindungen von anderen Servern akzeptiert. Sie sollten (als Root) „netstat -tulnp“ ausführen und sehen, auf welchem ​​Port/welcher Adresse php-fpm lauscht.

Antwort2

Aus den Kommentaren fallen mir vier Dinge ein.

  1. Routing – Sind die beiden Knoten in einem Netzwerk, die eine Verbindung zueinander ermöglichen. Verwenden Sie Netzwerktools wie Traceroute, ARP oder ARP, um dies zu überprüfen (ARP stellt sicher, dass der Knoten derselbe ist).
  2. Gibt es dazwischen eine Firewall oder Sicherheitsrichtlinie, die die genannten Ports blockiert?
  3. Läuft auf Ihrem Server RHEL/CentOS/Fedora oder eine andere Variante, die SELinux unterstützt? Falls ja, sollten Sie dies deaktivieren und es versuchen. Die folgenden Befehle geben Ihnen den Status von SElinux und machen es permissiv, wenn Sie es so wollen. Überprüfen Sie den Status von SElinux: getenforceODER sestatus | grep -i mode. Machen Sie es permissiv, wenn Sie es erzwingen: setenforce 0. Überprüfen Sie den Status erneut: getenforce.
  4. Suchen Sie auf beiden Servern nach IPtables. iptables -nLwürde auflisten, ob iptables aktiviert ist und diese Ports zulässt. Sie können Folgendes tun, um die aktuellen Regeln zu speichern, sie zu leeren und iptables vorerst zu stoppen.
    /etc/init.d/iptables speichern 
    iptables -F
    /etc/init.d/iptables stoppen

Antwort3

Wenn dies geschieht, hat Php-fpm möglicherweise keine untergeordneten Prozesse mehr. Überprüfen Sie Ihre Poolprotokolle auf Fehler. Dies geschieht normalerweise, wenn Sie in einer Umgebung mit hohem Datenverkehr lange laufende PHP-Abfragen haben.

verwandte Informationen