我有一个安装了 apache 2.0 的 Web 服务器。有时,可能当负载增加时,它会显示一个空白页并显示 503 服务不可用。
服务器负载不是太高,apache配置中有没有解决这个问题的方案?
谢谢
答案1
您可以尝试更改为不同的 MPM(您可以在配置中执行此操作),或者调整 MPM 的参数。例如,如果您使用的是 prefork 或 worker MPM,则可以增加 MaxClients 值。在后一种情况下,ThreadsPerChild 也可能是一个有用的配置值,可以进行调整。
您可以在标准 Apache 文档中找到有关 MPM 的信息。
但是,除非你运行的网站非常繁忙,否则我完全不会惊讶于你看到 503 错误 - 是否有可能有一些非常慢的服务器端代码占用了 Apache 请求太长时间?如果是这样,那么与仅仅尝试在 Apache 中解决这个问题相比,改进它可能会获得更多的收益。
答案2
您可以尝试设置 mod_status 来深入了解您的服务器
Listen 127.127.127.127:10127
ExtendedStatus On
<VirtualHost 127.127.127.127:10127>
ServerName 127.127.127.127:10127
#
# Allow server status reports generated by mod_status
#
<Location /server-status>
SetHandler server-status
</Location>
</VirtualHost>
状态虚拟主机已绑定到您服务器上的本地主机。您可以使用文本模式浏览器(如 elinks)访问它,或者通过 ssh 将该端口转发到您的机器。
答案3
检查错误日志,默认情况下位于
/var/log/httpd/error_log
如果它提到你是我们的工作进程,那么这可能是你的问题。
答案4
对我来说,答案有点不同。似乎有人想限制“下载”文件夹的使用。后来忘记了它不应该用于图像。
因此,当尝试加载一个包含 16 张图片(全部来自“下载”文件夹)的页面时,错误日志会显示大量 503 错误。
提高 MaxConnPerIP 的限制(我设置为 20)或完全删除可以解决我的问题。
<IfModule mod_limitipconn.c>
<Location /Downloads>
# This section affects all files under http://domain.com/Downloads
MaxConnPerIP 2
</Location>
</IfModule>