Hervorragende Software und praktische Tutorials
504 Gateway-Timeout
NginxPlötzlicher Fehler504 Gateway-Timeout, mit PHP zuDatenbankBei 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:
- Das Website-Programm verarbeitet eine große Datenmenge, was zu einer langen Wartezeit und einem 504-Gateway-Timeout führt.
- 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.
- 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.Server, öffnen Sie die nginx-Konfigurationsdatei. Sie können verwendenxshelloderXftpTools zum Anmelden am Server, ersteres ist inLinuxLetzteres dient zum Ändern der Datei über die SFTP-Methode von SSH.
Nginx-Konfiguration ändern
Ändern Sie /etc/nginx/nginx.conf 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 nginxSchauspielkunstEinstellungen 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-TimeoutParameterkonfigurationWenn 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 dazuGateway-TimeoutMit 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.