Apache 崩溃/挂断,无法处理请求

Apache 崩溃/挂断,无法处理请求

在某些时候,apache 似乎挂断了,不再处理请求,或者它们需要很长时间。我检查了错误日志。当我执行 apachctl stop 并再次启动 apache 时,没有显示任何错误,它又可以正常工作了

答案1

您的错误日志说了什么?

grep -i maxclient /var/log/httpd/error_log*

(认为​​这可能是 maxclient 问题...因此进行了该搜索)

您的 httpd.conf 文件可能需要进行调整。 话虽如此,让我们开始吧。

实际上,httpd.conf 总是位于同一个位置 - 我希望您对 shell 以及您选择的编辑器感到满意...我将在这个解释中使用 NANO。

首先完成这个命令:

cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.bkup.beforeItuned

接下来使用以下命令在编辑器中打开原始 httpd.conf 文件:

nano /etc/httpd/conf/httpd.conf 

然后使用“Control-W”打开搜索命令并输入 Timeout - 你应该会看到类似这样的内容

Timeout = 120

将其更改为

Timeout = 20 

按 Control-X 键,然后保存文件覆盖原始文件

最后 - 使用以下命令重新启动 Apache:

/etc/init.d/apache2 restart

按照上述说明,您还可以编辑一些其他设置:

确保每次只做一项更改,以确保每项更改都能正常工作……缓慢进行总比重大更改和重大崩溃要好

搜索以下部分:prefork MPM(或者只是 prefork )

<IfModule prefork.c>
StartServers       2
MinSpareServers    1
MaxSpareServers    5
MaxClients         10
MaxRequestsPerChild  1000
</IfModule>

并根据服务器的级别更改为以下之一:

基础级服务器(小型资源):

<IfModule prefork.c>
StartServers       1
MinSpareServers    1
MaxSpareServers    3
MaxClients         50
MaxRequestsPerChild  1000
</IfModule>

中级服务器(中等资源):

<IfModule prefork.c>
StartServers       2
MinSpareServers    2
MaxSpareServers    5
MaxClients         100
MaxRequestsPerChild  1000
</IfModule>

更大级别的服务器(更大的资源):

<IfModule prefork.c>
StartServers       2
MinSpareServers    2
MaxSpareServers    5
MaxClients         200
MaxRequestsPerChild  1000
</IfModule>

无论如何 - 这些应该是一个不错的开始 - 当然你会希望继续微调以获得最佳解决方案。

祝您编辑愉快:-)

这对你有帮助吗?一定要投票支持这个答案

答案2

Apache 崩溃的原因有很多。可能包括

  1. httpd.conf 或 .conf 中的配置不正确,包括
  2. 交通
  3. 内存使用情况
  4. 模块配置不当
  5. 有时间更新吗?
  6. 也许你被击中是因为开发

您的问题很模糊,所以我首先要查看您的 httpd.conf,如果您使用的是模块化编译,请尝试阻止加载不需要的模块。这些行如下所示:LoadMoudle mod_rewrite modules/mod_rewrite.so 大致如此。如果您不使用它们,请将其关闭。

接下来,查看您正在运行哪个版本。如果是 PHP 应用程序,请将脚本内存使用量调整到可达到的水平。还要查看您配置的允许同时服务的客户端数量。

让我们面对现实吧:这份清单可能长达一英里,远远超出了我目前解释的能力。我强烈推荐Apache 性能调优文档更加详细,并且来自可辩驳的来源。

多年来,我亲身经历过许多服务器问题——它们会发生。自动化你对它们的响应。在你需要介入之前,让计算机有机会处理事件。我强烈推荐监控作为一个强大且功能强大的工具,无需担心 Nagios 配置问题。Monit 配置使用清晰、简洁的语法。

祝你好运。

答案3

检查它可以同时处理的请求数。查看 HTTPD.CONF 文件。

答案4

Apache 挂起的原因有很多。连接数不足只是其中一个潜在原因,所以不要想当然。如果 Apache 行为异常,我首先会检查以下事项:

  1. 当然是错误日志。
  2. 查看访问日志以查看是否有任何请求正在被处理。
  3. 使用以下方法检查系统负载顶部或 top 查看 Apache 是否繁忙。
  4. 用来strace -p $APACHE_PID窥探并查看 Apache 正在做什么。
  5. 启用将 PHP 错误记录到文件的功能。许多 Linux 发行版默认不记录 PHP 错误。

相关内容