Apache 逾時與 TCP 重傳

Apache 逾時與 TCP 重傳

超時指令的文檔在 apache 中指出:

向客戶端寫入資料時,如果發送緩衝區已滿,則等待資料包確認的時間長度。

但如果 TCP 堆疊沒有收到並確認 ACK,則會重新傳送封包。那麼這兩件事如何相互作用呢? apache 逾時是否對中止連線之前的重試設定總體限制?

上下文是一種捲曲拉取定期失敗並出現錯誤的情況:

curl: (18) 傳輸已關閉,剩餘 XXXXXX 位元組可供讀取

我正在嘗試確定確切的原因。

在客戶端和伺服器上進行 Wireshark 追蹤後,似乎伺服器(apache)由於某種原因提前終止了會話(因此不是防火牆或其他強制其關閉的原因)。這種情況發生在兩種經常下載的檔案上:大型二進位檔案(100 mb mp4)和小型文字檔案(~10kb)。對於大文件,有一條 apache 日誌訊息:

指定的逾時已過期:[客戶端:] AH01581:將 URI /xxxx/xxxx/xxxx/ 的資料寫入客戶端時逾時

我目前最好的猜測是,這只是網路擁塞,因為故障往往會在某些時候聚集在一起,但如果可能的話,我想進一步確定它。

配置:

CentOS 6.6

阿帕契2.4.16

捲曲 7.19.7

相關內容