Apache 奇怪的错误消息“管道损坏”

Apache 奇怪的错误消息“管道损坏”

Apache error.log 中总是出现“(32) 管道损坏:core_output_filter:正在将数据写入网络”消息。

在 apache.conf 中设置了 EnableSendfile Off、EnableMMAP Off 但仍然一样。

操作系统:Debian etch

Apache 版本:Apache/2.2.3

启用 apache 模块:ctions alias auth_basic authn_file authz_default authz_groupfile authz_host authz_user autoindex cgi dir env fcgid include mime negotiation perl php5 rewrite setenvif ssl status suexec userdir。

谢谢。

答案1

由于您已经关闭了EnableSendfileEnableMMAP,看来您已经完成了作业。此错误的一般原因是 Apache 收到 SIGPIPE,当 Apache 尝试写入另一端已关闭的套接字时会发生这种情况(已描述这里,请查看最后一篇帖子)。该帖子建议远端用户可以通过按下“停止”或“重新加载”按钮来触发此操作。但是,如果您一直看到这些条目,我认为以下情况更有可能发生:

  • 客户端在某个时刻连接到 Apache,并建立一组并行连接。大多数客户端都会这样做,以便他们可以同时下载多个文件/图像/等,从而加快页面加载速度。
  • 客户端处于空闲状态但保持套接字打开。
  • 在某些时候,所有这些套接字在客户端都超时了。可能是防火墙或 NAT 设备杀死了它们,所以你永远不会在你的终端收到 TCP RST 或 FIN。
  • 下次 Apache 检查远端时TCP_KEEPALIVE,内核会发现套接字已破坏,并向 Apache 返回 SIGPIPE。

如果你的服务器很忙,我想这实际上是正常且预期的行为。事实上,甚至 Apache 人员自己似乎也不关心它,因为他们显然将LogLevelapache.org 设置为warn他们甚至看不到这些消息(注意这里)。此消息显然仅在级别上可见info,因此将其更改为notice或更高级别应可阻止它们被记录。

相关内容