Apache 超时和 TCP 重传

Apache 超时和 TCP 重传

超时指令的文档在 apache 中指出:

当向客户端写入数据时,如果发送缓冲区已满,则等待数据包确认的时间长度。

但是,如果 TCP 堆栈未收到并确认,它将重新发送数据包。那么这两件事如何相互作用?apache 超时是否在中止连接之前设置了重试的总体限制?

背景是 curl pull 周期性失败并出现错误的情况:

curl:(18)传输已关闭,剩余 XXXXXX 字节需要读取

我正在尝试找出确切的原因。

在客户端和服务器上都进行了 Wireshark 跟踪后,似乎服务器 (apache) 出于某种原因过早终止了会话(因此不是防火墙或其他原因强制关闭)。这种情况发生在两种经常下载的文件上:大型二进制文件(100 mb mp4)和小型文本文件(~10kb)。对于大型文件,有一条 apache 日志消息:

指定的超时已过期:[客户端:] AH01581:将 URI /xxxx/xxxx/xxxx/ 的数据写入客户端时超时

我目前最好的猜测是,这只是网络拥塞,因为故障往往在某些时候聚集在一起,但如果可能的话,我想进一步确定它。

配置:

CentOS 6.6

Apache 2.4.16

Curl 7.19.7

相关内容