Apache-Timeouts und TCP-Neuübertragung

Apache-Timeouts und TCP-Neuübertragung

DerDokumentation zur Timeout-Direktivein Apache heißt es:

Beim Schreiben von Daten an den Client die Zeitspanne, die auf die Bestätigung eines Pakets gewartet werden soll, wenn der Sendepuffer voll ist.

Wenn der TCP-Stack jedoch kein ACK empfängt, wird das Paket erneut gesendet. Wie interagieren diese beiden Dinge also? Legt das Apache-Timeout eine allgemeine Grenze für Wiederholungsversuche fest, bevor die Verbindung abgebrochen wird?

Der Kontext ist eine Situation, in der Curl-Pulls regelmäßig mit dem folgenden Fehler fehlschlagen:

curl: (18) Übertragung abgeschlossen, XXXXXX Bytes verbleiben zum Lesen

und ich versuche, den genauen Grund herauszufinden.

Nachdem wir sowohl auf dem Client als auch auf dem Server eine Wireshark-Ablaufverfolgung durchgeführt haben, scheint es, dass der Server (Apache) die Sitzung aus irgendeinem Grund vorzeitig beendet (also nicht durch eine Firewall oder etwas anderes, das sie zwangsweise schließt). Dies geschieht bei zwei Dateitypen, die häufig heruntergeladen werden: große Binärdateien (100 MB MP4) und kleine Textdateien (~10 KB). Für die großen Dateien gibt es eine Apache-Protokollmeldung:

Das angegebene Timeout ist abgelaufen: [Client:] AH01581: Timeout beim Schreiben der Daten für URI /xxxx/xxxx/xxxx/ auf den Client

Meine derzeitige Vermutung ist, dass es sich lediglich um eine Überlastung des Netzwerks handelt, da die Ausfälle zu bestimmten Zeiten häufig gehäuft auftreten. Ich würde das Problem jedoch gern genauer eingrenzen, wenn möglich.

Aufbau:

CentOS 6.6

Apache 2.4.16

Locken 7.19.7

verwandte Informationen