it-swarm.com.de

"408 Request Timeout" für Apache mit verstehen PHP

Problembeschreibung - Apache-Protokolle

Ich habe in der Apache-Protokolldatei ähnliche Elemente wie diese gefunden:

166.147.68.243 [24/Feb/2013:06:06:25 -0500] 19 web-site.com "-" 408 - "-"

Ich habe ein benutzerdefiniertes Protokollformat und 408 steht hier für den Status. Das Protokollformat ist:

LogFormat "%h %t %D %V \"%r\" %>s %b \"%{User-agent}i\"" detailed

Normalerweise sieht die Zeile in der Protokolldatei aus

184.73.232.108 [26/Feb/2013:08:38:16 -0500] 30677 www.site.com "GET /api/search... HTTP/1.1" 200 205 "Zend_Http_Client"

Deshalb sehen 408 Fehlerzeilen für mich seltsam aus. Es wird keine Anfrage protokolliert und ich habe keine Ahnung, was optimiert werden soll.

Fragen

Wie kann das Problem angegangen werden? Welche zusätzlichen Informationen oder Protokolle sollte ich sammeln? Was könnte das Problem verursachen? Stimmt das auf dem Server nicht? Oder ist das absolut ein Problem mit der Netzwerkverbindung?

Ich spreche das an, weil unser Kunde sich darüber beklagt hat, dass sein Handy 408 Fehler aufweist. Ich habe viele Datensätze in der Protokolldatei gefunden, aber ich muss zugeben, dass ich nicht weiß, was ich damit tun soll.


Meine eigene Forschung

Hier gibt es bereits einige Fragen zu diesem Thema. Aber die Menschen sind viel konkreter. Wie sie Diskutieren Probleme mit bestimmten Client-Software und Skripts. Hier habe ich gerade den Fehler erhalten, als ich eine Seite auf dem iPhone öffnete.

In HTTP, 408 Request Timeout wird beispielsweise empfohlen, die GET-Anforderung vor dem POST auszuführen. Wenn ich einen kundenspezifischen Client habe, kann ich das tun. Ich kann das Verhalten des Browsers des Benutzers jedoch nicht steuern.

Schätze # 1

Bei der Suche im Internet und beim Nachdenken über das Problem habe ich https://serverfault.com/questions/383290/too-many-408-error-codes-in-access-log gefunden.

Es wird empfohlen, den Parameter Timeout config auf den Standardwert zurückzusetzen.

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300

Ich habe den Wert 30 zuerst versucht, weil ich dachte, 30 Sekunden sollten ausreichen. Aber selbst bei einem Standardwert von 300 Sekunden werden die Fehler weiterhin im Protokoll angezeigt. Ich habe tail -f gemacht, als ich diesen Text geschrieben habe und in wenigen Minuten mehr als 10 Zeilen erhalten habe.

Für mich sieht das nicht nach einer vollständigen Lösung aus.

13
Victor Smirnov

Nach einigen Studien zu diesem Thema kam ich zu folgender Antwort. Es wird von unserem Hauptentwickler zur Verfügung gestellt, und ich denke, es gibt eine gute Erklärung des Themas.

Diese Fehler sind völlig normal. Sie sind kein Anzeichen für ein größeres Problem, sondern normale Verbindungen, bei denen Apache länger als erlaubt geöffnet bleibt.

Zum Beispiel ließen die Abfragen des Clients Apache immer wieder geöffnet. Apache reagierte, indem er ihn angemessen herunterfuhr.

Wenn dies nicht der Fall wäre, könnten eine Handvoll Leute unseren Server übernehmen und niemandem die Verbindung zulassen.

Meistens stammen diese Fehler von Systemen, die nach Exploits suchen, und Sie können sie neu erstellen, indem Sie eine Telnet-Sitzung öffnen und geöffnet lassen.

Zur gleichen Zeit, tail -f des Zugriffsprotokolls, und innerhalb der X-Zeit (KeepAliveTimeout) wird Ihr IP-Popup mit den gleichen Fehlercodes angezeigt.

Damals in der Zeit von Apache 1.3 war dieser Fehler weit verbreitet, aber dann kam 2.2 heraus und sie hatten ihn entfernt, bis genug von uns die Rückgabe gefordert hatten, da er uns Anregungen dazu gibt, wie viele Leute nur den Hafen offenhalten keine tatsächliche Ressource anfordern usw.

Ich denke, nichts anderes sollte hier gemacht werden, außer um Timeout auf einen vernünftigen Wert zu setzen, wie ich es in der ursprünglichen Frage beschrieben habe.

10
Victor Smirnov

Wenn in Apache ein Proxy eingerichtet ist und das Back-End aus irgendeinem Grund nicht rechtzeitig reagiert, werden die gleichen 408 - - in den Protokollen angezeigt. Proxy-Timeouts werden separat konfiguriert. Aus diesem Grund scheint das Ändern des Standard-Timeouts von Apache nichts mit diesen Anforderungen zu tun.

0
M K

Tatsächlich sind 408 Nachrichten in Apache-Protokollen ein Mechanismus zum Abrufen vor dem Abrufen in modernen Browsern. Durch das Betrachten von Apache-Protokollen in den letzten 3 Jahren hat sich die Anzahl von 408 Fehlern für denselben Datenverkehr mehr als verdoppelt.

0
Ron