So lösen Sie das Nginx 504-Gateway-Timeout

Nginx meldet plötzlich einen 504-Gateway-Timeout-Fehler. Bei der Verwendung von PHP für eine große Anzahl von Datenbankabfragen tritt gelegentlich ein 504-Gateway-Timeout-Fehler auf. Keine Sorge, ein 504-Gateway-Timeout ist möglich. Nur einzelne Operationen verursachen einen 504-Gateway-Timeout. Aktualisieren Sie die Timeout-Seite oder stellen Sie die Verbindung zur Datenbank fort, was jedoch problematischer ist. Sehen wir uns an, wie sich das Nginx 504-Gateway-Timeout-Problem lösen lässt.

504 Gateway-Timeout

Plötzlicher Fehler, mit PHP zuBei einer großen Anzahl von Abfragen können gelegentlich 504 Gateway-Timeout-Fehler auftreten. Seien Sie nicht beunruhigt, da nur einzelne Operationen 504 Gateway-Timeouts verursachen können. Aktualisieren Sie die Timeout-Seite oder stellen Sie die Verbindung zur Datenbank fort, was jedoch problematischer ist. Sehen wir uns an, wie sich das Nginx 504 Gateway-Timeout-Problem lösen lässt.

Normalerweise führen die folgenden Situationen zu einem 504-Gateway-Timeout:

  1. Das Website-Programm verarbeitet eine große Datenmenge, was zu einer langen Wartezeit und einem 504-Gateway-Timeout führt.
  2. Wenn in einem Webprogramm eine externe Anforderung aufgerufen wird, wird aufgrund einer Zeitüberschreitung in der Antwort auf die externe Anforderung ein 504-Gateway-Timeout verursacht.
  3. Nachdem die Verbindung zur SQL-Datenbank fehlgeschlagen war, wurde das Programm nicht rechtzeitig gestoppt, was zu einer Endlosschleife und einem 504-Gateway-Timeout führte.

Das 504-Gateway-Timeout-Problem wird durch die Nginx-Konfiguration verursacht., öffnen Sie die nginx-Konfigurationsdatei. Sie können verwendenoderTools zum Anmelden am Server, ersteres ist inLetzteres dient zum Ändern der Datei über die SFTP-Methode von SSH.

Nginx-Konfiguration ändern

Ändern Sie /etc/nginx/ dokumentieren.

Fügen Sie die Parameter im http {}-Block hinzu:


fastcgi_connect_timeout 6000;
fastcgi_send_timeout 6000;
fastcgi_read_timeout 6000;

Sehen wir uns an, was diese Parameter bewirken.

fastcgi_connect_timeout

Fastcgi-Verbindungstimeout, Standard ist 60 Sekunden

fastcgi_send_timeout

Das Timeout für den Nginx-Prozess, um eine Anfrage an den FastCGI-Prozess zu senden. Der Standardwert beträgt 60 Sekunden.

fastcgi_read_timeout

Das Timeout für den FastCGI-Prozess, um die Ausgabe an den NginX-Prozess zu senden. Der Standardwert beträgt 60 Sekunden.

Darüber hinaus gibt es in nginxEinstellungen der Timeout-Parameter.

Proxy-Verbindungs-Timeout 20000;
Proxy_Sendezeitüberschreitung 20000;
Proxy-Lesezeitüberschreitung 20000;

Proxy-Verbindungszeitüberschreitung

Nginx-Verbindungstimeout mit Backend-Server (Proxy-Verbindungstimeout)

Proxy_Sendezeitüberschreitung

Datenübertragungszeit des Backend-Servers (Sende-Timeout des Agenten)

Proxy_Lese-Timeout

Nach erfolgreicher Verbindung die Antwortzeit des Backend-Servers (Proxy-Empfangs-Timeout)

Informationen zum Proxy-TimeoutWenn Ihr Nginx in diesem Teil keine externen Proxy-Dienste bereitstellt, können Sie die Konfiguration hier ignorieren.

Nachdem Nginx geändert wurde, überprüfen Sie mit nginx -t, ob die folgenden Konfigurationsdateien korrekt sind, und starten Sie dann den Nginx-Dienst neu.

systemctl startet nginx neu

PHP-Konfiguration ändern

1. Ändern Sie die Datei /etc/php.ini und suchen Sie in der Datei php.ini in Sekunden nach max_execution_time.

maximale Ausführungszeit
max_execution_time ist die maximale Ausführungszeit eines PHP-Skripts. Der Standardwert beträgt 30 Sekunden. Es wird empfohlen, den Wert auf 300 Sekunden zu ändern.

2. In /etc/php-fpm.d In, ändern http://www.conf Datei. Suchen Sie nach request_terminate_timeout in Sekunden.

request_terminate_timeout
Legen Sie das Timeout für eine einzelne Anfrage fest. Es wird empfohlen, den Wert auf 6000 festzulegen.

3. Sie können es zum PHP-Programm hinzufügen setze_Zeitlimit(Sekunden) Legen Sie die maximale Ausführungszeit fest

Beispiel: set_time_limit(0) bedeutet kein Timeout.

Starten Sie den PHP-Dienst neu, nachdem Sie die Parameter in PHP geändert haben.

systemctl restart php-fpm

Zusammenfassen

Die obige Methode zum Ändern des Nginx 504-Gateway-Timeouts. Im Allgemeinen führt dies dazuMit der oben beschriebenen Lösung wird das 504-Gateway-Timeout vorübergehend behoben, indem die Timeout-Periode verlängert wird. Abschließend müssen das Website-Programm und die Datenbank optimiert werden, um die endgültige Lösung zu erreichen.

 

Punktzahl

Das ist eine gute Idee

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * Mark