解决 Windows 版 Apache 无法访问或假死的问题

作者: iEdon 分类: 早期归档 发布时间: 2015-04-28 23:58

使用 Windows Apache 的用户一定会有这样的经历:

在 Windows 上安装并启用 Apache 并无异常,而且会觉得 Apache 感觉真的比 IIS 好。但是在使用了 2-3 天后,Apache 就会出现打不开,访问慢的现象,这个时候只有重启,然而过几天依然如此。iEdon 也遇到了同样的问题。

打开 Apache 的错误日志,可以在里面发现大量的报警:“指定的网络名称不再可用” 这种类似的报警。究其原因,是由于 Apache Windows 版本采用了 Windows Socket 2 模型中的 AcceptEx() 函数。

AcceptEx() 允许得到高于传统 accept() 的性能,并且性能较为显著。显然 Apache 的初衷是好的,但是其实际效果却令人较为失望。至今这个 BUG 未能修复,据说不是 Apache 的错。

解决办法:

要解决这种办法,只要使用 HTTP 过滤(直译)即可。

在 httpd.conf 中添加这四行代码,保存即可:

AcceptFilter http none
AcceptFilter https none
EnableSendfile Off
EnableMMAP off

接下来,烦人的错误就会消失了。