Apache proxfy_fcgi – Fehler beim Senden der Anfrage an

Lesezeit: 6 Minuten

Benutzeravatar von require_once
einmalig benötigt

Ich habe Cloud-Hosting bei Google, es ist beschissen, um ehrlich zu sein, aber ich versuche, damit weiterzukommen, ich habe LAMP-Stack auf einer VM installiert und meine Website in htdocs abgelegt. Wenn ich versuche, auf meine Website zuzugreifen, gibt es mir request timeout aber manchmal funktioniert es für 5 Minuten oder so.

Wenn ich Apache-Fehlerprotokolle sehe, gibt es mir dies

075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:55.185819 2015] [proxy_fcgi:error] [pid 4995:tid 140183521683200] (70007)The timeout specified has expired: [client 162.158.255.169:34198] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:55.487458 2015] [core:notice] [pid 2953:tid 140183785137920] AH00052: child pid 4995 exit signal Segmentation fault (11)
[Tue Oct 27 18:12:55.787973 2015] [proxy_fcgi:error] [pid 5063:tid 140183530075904] (70007)The timeout specified has expired: [client 199.27.133.137:13151] AH01075: Error dispatching request to : (polling), referer: http://whichtube.com/watch/g9-4dCeFQng/allama-nasir-abbas-jawab-ali-as-nae-talwar-kayou-na-uthai.html
[Tue Oct 27 18:12:57.542883 2015] [proxy_fcgi:error] [pid 5329:tid 140183521683200] (70007)The timeout specified has expired: [client 173.245.56.198:51348] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:57.976752 2015] [proxy_fcgi:error] [pid 5063:tid 140183479719680] (70007)The timeout specified has expired: [client 173.245.56.198:63779] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:58.993666 2015] [proxy_fcgi:error] [pid 5194:tid 140183496505088] (70007)The timeout specified has expired: [client 162.158.255.141:16226] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:59.196701 2015] [proxy_fcgi:error] [pid 5329:tid 140183513290496] (70007)The timeout specified has expired: [client 173.245.56.198:32819] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:01.462039 2015] [proxy_fcgi:error] [pid 5329:tid 140183504897792] (70007)The timeout specified has expired: [client 199.27.128.166:48057] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:07.518999 2015] [proxy_fcgi:error] [pid 5063:tid 140183471326976] (70007)The timeout specified has expired: [client 173.245.56.198:13694] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:16.804990 2015] [proxy_fcgi:error] [pid 5261:tid 140183513290496] (70007)The timeout specified has expired: [client 199.27.128.134:28694] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:33.055860 2015] [proxy_fcgi:error] [pid 5328:tid 140183236331264] (70007)The timeout specified has expired: [client 39.41.139.220:52154] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:57.391361 2015] [proxy_fcgi:error] [pid 5063:tid 140183521683200] (70007)The timeout specified has expired: [client 39.41.139.220:52029] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:57.552542 2015] [core:notice] [pid 2953:tid 140183785137920] AH00052: child pid 5063 exit signal Segmentation fault (11)

Meine Website ist in PHP, ich habe nichts anderes als die Verzeichnisberechtigung geändert. Gibt es etwas, das ich vermisse?

Benutzeravatar von Roberto Ibarra Rabadán
Roberto Ibarra Rabadán

Ich hatte das gleiche Problem, es stellt sich heraus, dass Apache ein Modul hat, das aufgerufene Timeouts verarbeitet mod_reqtimeout

Der Standardwert (Sie werden ihn nicht in der Standard-http.conf sehen) ist:

RequestReadTimeout handshake=0 header=20-40,MinRate=500 body=20,MinRate=500

In meinem Fall habe ich eine Datei über eine einfache HTML-Formularübermittlung hochgeladen, sodass die Datei technisch gesehen Teil des Headers ist und die Standardkonfiguration besagt, dass der Header nach 20 bis 40 Sekunden abläuft. Das 20-40-Ding ist ziemlich cool, weil es nach 20 Sekunden abläuft, aber wenn 500 Bytes in einer Sekunde gesendet werden, fügt es eine zusätzliche Sekunde Wartezeit hinzu, bis es 40 Sekunden erreicht, und dann kommt es zu einem Timeout, egal was passiert.

Ich lade größere Dateien auf meine Website hoch, also habe ich diese Zeile zu meiner httpd.conf-Datei hinzugefügt:

RequestReadTimeout handshake=0 header=20-600,MinRate=500 body=20,MinRate=500

Solange also mein Benutzer Daten mit mindestens 500 Bytes/s sendet, wird die Anfrage erst nach max. von 600 Sekunden erreicht ist (lesen Sie besser die Dokumentation, zitieren Sie mich nicht zur Durchsatzrate)

Es ist eigentlich ein ziemlich cooles Apache-Modul, aber nicht sehr bekannt, da die Leute empfehlen, andere Apache-Timeout-Einstellungen in anderen ähnlichen “The timeout selected has expired:”-Problemen im Zusammenhang mit PHP-FPM zu ändern, aber dieses Problem tritt bei jedem Post auf, der länger als 40 dauert Sekunden, die standardmäßig in Apache übermittelt werden.

  • Die Fehlermeldung AH01075 von proxy_fcgi sagt, dass die Anfrage, die an php-fpm weitergeleitet wird, abgelaufen ist, vermutlich weil ProxyTimeout wurde überschritten. Wollen Sie damit sagen, dass Sie denselben Fehler sehen, wenn RequestReadTimeout wird ausgelöst? Ich frage, weil ich stattdessen erwarten würde, so etwas zu sehen “Zeitüberschreitung zum Lesen des Anforderungstexts” wenn RequestReadTimeout waren beteiligt.

    – Molekularbär

    26. September 2019 um 18:49 Uhr

  • @molecularbear der genaue Fehler, den ich bekam, war: [Fri May 10 13:19:41.073170 2019] [proxy_fcgi:error] [pid 26964:tid 140276668856064] (70007)The timeout specified has expired: [client 201.17.156.113:2022] AH01075: Error dispatching request to : (reading input brigade), referer: https://siste.. Diese Zeitüberschreitung wurde verursacht, weil die Datei, die der Benutzer in mein PHP-Skript hochgeladen hat (die eigentlich in den POST-Headern gesendet wird), länger als der Standardwert gedauert hat, sodass eine Zeitüberschreitung aufgetreten ist.

    – Roberto Ibarra Rabadán

    27. September 2019 um 19:16 Uhr

  • hüte dich davor handshake Variable sind erst ab Apache Version 2.4.39 verfügbar

    – Christophorus Reyhan

    28. April 2022 um 3:41 Uhr

Benutzeravatar von Tim
Tim

Anscheinend dauert die Ausführung Ihres PHP-Codes länger als das konfigurierte Timeout. Wenn Apache eine PHP-Seite mit fcgi lädt, sendet es die Anfrage an den PHP-FPM-Dienst zur Verarbeitung. Wenn PHP-FPM zu lange braucht, um zu antworten, wird diese Art von Zeitüberschreitung angezeigt. Mögliche Ursachen sind; Ihr PHP-Code könnte in einer Schleife stecken bleiben oder auf eine Antwort von einer Datenbank warten, die besonders lange dauert.

Zur Fehlerbehebung würde ich die CLI-Version von PHP verwenden, um zu sehen, ob das Skript in einer angemessenen Zeit abgeschlossen wird ($ time php /path/to/file.php). Möglicherweise finden Sie zusätzliche Informationen im PHP-FPM-Protokoll (Standard: /var/log/php-fpm.log).

Für mich hat ein Neustart von php-fpm den Job gemacht. Nachdem Sie im Protokoll nachgesehen haben, wie @varlogtim empfohlen hat. Das Protokoll zeigte, dass es in den letzten 12 Stunden keine Aktivität gab …

Ich hatte dieses Problem auch. Möglicherweise möchten Sie in Ihrem Code nach einem fest codierten Teil und einer Verbindung zu einem anderen nicht verfügbaren Server suchen. (zum Beispiel eine lokale IP, die online nicht erreichbar ist).

Für meine habe ich php-fpm.log auf meinem Server überprüft und festgestellt, dass meine Anwendung versucht, eine Verbindung zu einem alten Server (falsche IP) herzustellen, und dass eine Zeitüberschreitung vorliegt.

Ich stand vor genau diesem Problem. Ich habe das Problem gelöst, indem ich das Timeout erhöht habe. Mein Betriebssystem ist AlmaLinux 8.5. Fügen Sie die folgenden zwei Zeilen entweder in Ihrer hinzu httpd.conf oder Ihre virtualhost conf-Datei.

Timeout 600

ProxyTimeout 600

Benutzeravatar von Mojtaba Rezaeian
Mojtaba Rezaeian

Ich hatte das gleiche Problem und in meinem Fall hat diese Lösung funktioniert:

  • Zunahme request_terminate_timeout Wert befindet sich in meinem
    /etc/php-fpm.d/www.conf Datei.

Hinweis: Diese Option überschreibt php max_execution_time ini und das Festlegen eines niedrigen Werts dafür könnte Ihnen viele Probleme bereiten, da es andere Optionen außer Kraft setzt und die Anfrage zwangsweise beendet, wenn das Timeout abläuft. (Wenn Sie fragen, welcher Wert eingestellt werden soll; es sollte die maximale Skriptverarbeitungszeit sein, basierend auf Ihren Anforderungen, aber normalerweise sind 600 Sekunden (10 Minuten) oder 10 Minuten (10 Minuten) mehr als genug.)

Benutzeravatar von element303
element303

Ich hatte das gleiche Problem auf Centos 7: Problem mit SELINUX. Sie können SELINUX vorübergehend deaktivieren, um Folgendes zu überprüfen:
sudo setenforce 0

1440260cookie-checkApache proxfy_fcgi – Fehler beim Senden der Anfrage an

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy