504 Gateway Time-out

Aus Glaskugel
Zur Navigation springen Zur Suche springen

Eine Website aufm Pleskserver ist nicht erreichabr aber alle Zabbix-Metriken sind in Ordung. Also kein Webserverausfall o.ä. aber der Kunde bekommt trotzden ein 504 Gateway Time-out

Die error.log enthält dann gerne einmal einen Hinweis wie diesen hier:

[proxy_fcgi:error] [pid 42290:tid 140458047010560] (70007)The timeout specified has expired: [client 203.0.113.2:54693] AH01075: Error dispatching request to :, referer: http://example.com/gallery

Hier kann man ansetzen denn die Ausführung von PHP-Code dauert (vermutlich billiger/schlechter Code) zu lange und das Proxy Timeout wird überschritten. Eigentlich also eine Sache für den lausigen Entwickler.

(siehe auch: https://support.plesk.com/hc/en-us/articles/115000064929-Website-on-Plesk-server-is-not-accessible-504-Gateway-Time-out-The-timeout-specified-has-expired-client-203-0-113-2-54693-AH01075-Error-dispatching-request-to)

FastCGI limits für eine Domain anpassen ohne den Server groß umzumodeln

1. In Plesk einloggen
2. Entsprechende Domain bearbeiten
Domains > example.com > Einstellungen für Apache & nginx
3. Folgenden Inhalt in die Textboxen "Zusätzliche Anweisungen für HTTP und Zusätzliche Anweisungen für HTTPS"
FcgidIdleTimeout 1200
FcgidProcessLifeTime 1200
FcgidConnectTimeout 1200
FcgidIOTimeout 1200
Timeout 1200
ProxyTimeout 1200
4. OK

FastCGI Limits serverweit anpassen (z.B. bei einem Managed vServer)

1. Login via SSH als User root
2. FastCGI config im Texteditor öffnen.
mcedit /etc/httpd/conf.d/fcgid.conf
3. Werte wie folgt anheben
FcgidIdleTimeout 1200
FcgidProcessLifeTime 1200
FcgidConnectTimeout 1200
FcgidIOTimeout 1200
4. Wenn der FPM PHP Handler benutzt wird, musst Du eine eigene config erstellen
mcedit /etc/httpd/conf.modules.d/00-proxy_timeout.conf
4a In die kommt dann folgender Code
Timeout 1200
ProxyTimeout 1200
5. der ngix muss freilich die gleichen Timeout Werte kennen.
Erstelle also eine entsprechende Zusatzkonfig via mcedit /etc/nginx/conf.d/timeout.conf
und füge den Inhalt wie folgt ein
proxy_connect_timeout 1200;
proxy_send_timeout 1200;
proxy_read_timeout 1200;
send_timeout 1200;
fastcgi_send_timeout 1200;
fastcgi_read_timeout 1200;
6. neue config testen
apachectl configtest
Syntax OK
7. Apache neu starten
service httpd restart