请求失败:读取标题时出错

最近我把我的服务器从一个提供者移到另一个提供者,并开始在apache错误日志中得到这个消息: “请求失败:读取头文件时出错”

从错误和相应的访问Apache日志示例:

ApacheServer$ cat error_log ApacheServer [Tue Jan 20 11:07:44 2015] [error] [client xxxx] request failed: error reading the headers ApacheServer$ cat access_log xxxx - - [20/Jan/2015:11:06:44 +0200] "GET SomeRandomRequest HTTP/1.1" 400 226 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; BRI/2; MAARJS)" "-" 

我必须承认,除了PHP版本(从5.3到5.4)没有任何改变。
我没有看到任何关系到某些特定的浏览器或某些特定的要求,这是完全随机的。
另外它不能成为交换机的问题,因为我有我的其他Apache服务器上没有共享相同的交换机相同的问题。

直到现在我试图:
– 更新网卡驱动程序
– 使用ethtool -G eth1 rx 4096将RX从256提高到4096
– 将第二个网卡连接到接口
– 多次谷歌这个问题,但没有find解决scheme或相同的问题。

服务器版本:Apache / 2.2.15-39(Unix)
centos 6.5

这可能是一个客户端问题,但是为什么在我说不出来之前没有得到它呢?

当Apache收到一个请求,并且在头部分结束之前没有完成的时候,这个错误就会被logging下来。 因此,至lessApache已经收到请求行,例如GET / HTTP/1.0但在这之后已经发送了一组有效的头文件。

所以它可以不是任何头文件,也可以是一堆没有空白行的头文件,它们表示头文件和请求体的边界。

我想这可能是默认的PHP超时可能已经改变了你的两个安装,所以这是值得检查,但这真的是一个坏的(或慢)的客户端请求到您的Web服务器的迹象。