使用 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
接下来,烦人的错误就会消失了。
Leave a Reply