Windows 上的 Apache 2.4 响应缓慢,在提供某些动态页面时挂起

Windows 上的 Apache 2.4 响应缓慢,在提供某些动态页面时挂起

(我知道这个问题的答案。发布此帖只是为了与社区分享答案)

我的本地(Windows 7)Apache 2.4 实例体验延误或者提供某些 URL 时会挂断,具体取决于我使用哪种浏览器访问这些 URL

借助 Firefox/Chrome,Apache反应迟钝在某些 URL 上。任何给定 URL 上大约有 20% 的时间会出现缓慢现象。当这种情况发生时,会有 5 秒的延迟,在此期间 Firefox 会显示“正在等待...”状态。

使用 Internet Explorer 9,Apache 直接挂起并停止处理任何请求(使用任何浏览器),直到重新启动。

  • 这似乎只发生在动态 (PHP) 请求中,但并非所有请求都会发生。事实上,它只发生在一个特定的网站上。同一台机器上的其他基于 PHP 的网站运行正常。
  • 有问题的站点由大量子域名(VirtualHosts)组成,这一点可能很重要,也可能不重要。
  • 禁用 Windows 防火墙和 Comodo 防火墙没有帮助。
  • 该问题似乎在“较繁忙”的页面上更频繁出现(对 IFRAMES 的额外请求等)。

我尝试了许多更改httpd.conf(例如禁用 KeepAlive、EnableMMAP、HostnameLookups),但似乎没有任何效果。

答案1

Thomasz 回答


解决方案是将以下内容添加到您的httpd.conf

AcceptFilter http none
AcceptFilter https none

在 Windows 上,这会禁用 AcceptEx() API(WinSock 的一部分),从而提供一些性能改进,但可能与 Comodo 防火墙冲突。

将 Comodo 防火墙设置为“禁用”模式没有用,因为请求可能仍会经过 Comodo 的网络代码。我认为必须完全卸载 Comodo 才能消除此问题(尽管我还没有尝试过)。

如果您在使用 Apache 2.2 时遇到类似问题,则应使用 Win32DisableAcceptEx 指令。

参考

引自http://httpd.apache.org/docs/2.4/mod/core.html

Windows 上的默认值为:

AcceptFilter http data

AcceptFilter https data

Window 的 mpm_winnt 解释 AcceptFilter 以切换 AcceptEx() API,并且不支持 http 协议缓冲。有两个值使用 Windows AcceptEx() API 并将在连接之间循环使用网络套接字。data 等待直到数据已按上述方式传输,并且初始数据缓冲区和网络端点地址均从单个 AcceptEx() 调用中检索。connect 将使用 AcceptEx() API,还会检索网络端点地址,但与 none 不同,connect 选项不会等待初始数据传输。

在 Windows 上,none 使用 accept() 而不是 AcceptEx(),并且不会在连接之间回收套接字。这对于驱动程序支持损坏的网络适配器以及某些虚拟网络提供商(如 vpn 驱动程序或垃圾邮件、病毒或间谍软件过滤器)非常有用。

也可以看看: http://forums.comodo.com/help-for-comodo-antivirus/conflict-with-apache-t260.0.html;msg31636#msg31636

答案2

我在 Windows 7 Pro 机器上运行 Apache 2.4.16,我的网站大约 2 周前停止工作。添加此软件解决了问题。

ServerRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.4"

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen XX.XX.XX.XX:80
Listen 80
AcceptFilter http none
AcceptFilter https none

相关内容