Windows 上的 Apache 陷入停滞

Windows 上的 Apache 陷入停滞

我们在 Windows Server 2003 上运行着 Apache 2.2.18,当访问者数量很多时,Apache 似乎会变得越来越慢,最后完全停滞。

有谁知道为什么会这样吗?

该服务器基于云,配备 4GB RAM

.conf 文件位于此处pastebin.ca/2070217

答案1

Apache 是一个猛兽。在默认设置下,它是一个丑陋的野兽。发布 httpd.conf,这里的某个人将能够更好地为您提供相关的优化提示。

答案2

定义“大量访客”?

您检查过日志吗?

对你的服务器进行了基准测试吗?

您确定是 Apache 导致了挂起,而不仅仅是在 Apache 上运行的基于 Web 的应用程序吗?

我认为你的问题缺乏适当的信息来给出可靠的答案。

答案3

Windows 上的 Apache 使用基于线程的模型,除非您更新这些值,否则默认为 64 个线程。每个线程处理 1 个连接。

我的WampDeveloper 专业版配置设置如下:

(C:\WampDeveloper\Config\Apache\extra\httpd-mpm.conf)

ThreadsPerChild 256
ThreadLimit 384

然后确保 KeepAlives 已设置,但设置得较低...

(C:\WampDeveloper\Config\Apache\extra\httpd-default.conf)

KeepAlive On
KeepAliveTimeout 1

进行更改并重新启动 Apache。

检查您的“/server-status”和“/server-info”URL(如果您正在使用其他 wamp 包,则可能需要取消注释 httpd.conf 中的某些行以启用这些 URL)。

第一个 URL 将显示所有连接及其状态。第二个 URL 将显示已加载的配置值。

然后编辑 php.ini 并设置合理的输出缓冲值:

output_buffering = 4096

如果值为“On”,则可能在脚本结束之前不会向客户端发送任何内容,并且会让您的页面看起来需要很长时间才能加载。

也可以尝试:

  1. 使用 mod_php 代替 CGI
  2. 使用 PHP 操作码缓存,例如 eAccelerator 或 APC。
  3. 注释掉 httpd.conf 中的以下更改:

EnableMMAP 关闭

EnableSendfile 关闭

Win32DisableAcceptEx

请注意,速度变慢可能是由于 PHP 代码编写/开发不佳,导致处理速度缓慢,或者导致每个 Apache 线程的大小增加(通过 PHP 读取/传递可下载文件会产生这种效果)。

相关内容