PHP-FPM (FastCGI Process Manager) ist eine wichtige Ausführungsmaschine für PHP in einer hohen Parallelitätsumgebung und wird in Nginx als Backend-Unterstützung häufig verwendet. Ein 502 schlechtes Gateway- Fehler zeigt normalerweise, dass die Kommunikation zwischen Nginx und PHP-FPM unterbrochen oder abnormale Reaktion hat. In diesem Artikel werden mögliche Gründe und Optimierungslösungen aus mehreren Aspekten eingeführt.
In hohen Last-Szenarien kann der PHP-FPM-Prozess aufgrund von Ressourcenerschöpfung oder unsachgemäßer Konfiguration abstürzen, was dazu führt, dass die Anforderung nicht verarbeitet wird, was zu einem Fehler von 502 führt. Sie können den Prozessstatus anzeigen und versuchen, den Dienst neu zu starten:
$ systemctl status php-fpm
$ systemctl restart php-fpm
Wenn der PHP-FPM-Prozesspool-Parameter falsch eingestellt ist, kann die Anforderung möglicherweise zu klein ist, wenn die max_children- Einstellung zu klein ist, die Anforderung möglicherweise blockiert oder abgelehnt wird. Es wird empfohlen, die folgende Konfiguration zu überprüfen und zu optimieren:
$ vim /etc/php-fpm.d/www.conf
Die empfohlene Konfiguration lautet wie folgt:
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30
pm.max_requests = 500
Wenn PHP -Skripte zu lange verarbeitet werden, z. B. die Verarbeitung großer Dateien oder komplexe Geschäftslogik, reicht die Standardeinstellung für Timeout möglicherweise nicht aus, wodurch die Verbindung zu Nginx unterbrochen wird.
Das Verbindungszeitlimit kann erweitert werden um:
$ vim /etc/php-fpm.d/www.conf
Einstellungen Vorschläge:
request_terminate_timeout = 180
Wenn die FastCGI-Pfad- oder Parametereinstellung in der Nginx-Konfigurationsdatei falsch ist, kann die Anforderung nicht erfolgreich an PHP-FPM übergeben werden, wodurch ein 502-Fehler ausgelöst wird.
Bitte überprüfen Sie die Standortkonfiguration von PHP -Anforderungen in nginx.conf :
$ vim /etc/nginx/nginx.conf
Richtige Konfigurationsbeispiel:
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Wenn der Speicher oder die CPU-Ressourcen des Servers stark belegt sind, kann PHP-FPM keinen neuen Prozess erstellen, um auf die Anforderung zu reagieren, was auch zu einem 502-Fehler führen kann.
Sie können die Verwendung von Serverressourcen über die folgenden Befehle überwachen:
$ top
$ free -m
Wenn Sie bestätigen, dass die Ressourcen nicht ausreichend sind, können Sie in Betracht ziehen, die Hardwarekonfiguration zu verbessern oder den Ressourcenverbrauch zu reduzieren, indem Sie den Code- und Caching -Mechanismus optimieren.
Um PHP-FPM 502-Fehler zu beheben, müssen wir den Prozessstatus, die Konfigurationsparameter, die Anforderungsverarbeitungszeit, den Kommunikationspfad zwischen NGINX und PHP-FPM und Ressourcenverbrauch des Servers umfassend berücksichtigen. Durch angemessene Konfiguration und Ressourcenoptimierung können nicht nur 502 Fehler vermieden werden, sondern die Gesamtdienstestabilität und die Reaktionsgeschwindigkeit können auch verbessert werden.