Linux / apache 网络服务器分段错误警告

Linux / apache 网络服务器分段错误警告

最近我在我的网络服务器上收到了很多分段错误警告。

警告如下所示:

[notice] child pid xxxx exit signal Segmentation fault (11)

我已经咨询了服务器提供商(这是一个专用的红帽企业服务器),但他们没有发现任何东西。

我目前所做的:

自出现错误以来我已经尝试了以下操作:

  • 我添加了更多内存
  • 我已经关闭/打开了几个 php 模块(他们将我发送到一个网页,有人遇到了同样的问题,是由过多的 php 模块引起的)

在出现警告的时刻,似乎还有足够的可用内存,并且进程数量非常少(httpd 进程数量约为允许最大值的四分之一)。

什么原因可能导致这些错误?

编辑:当前版本

  • 阿帕奇:2.0.52
  • PHP:5.2.8
  • 红帽企业版 4

编辑2:虽然我很久以前就问过这个问题,但直到我升级到 php 5.3 才能够解决它。

答案1

多次观察到“退出信号分段错误 (11)”错误。当 Apache 崩溃时某些脚本未完成时,就会发生这种情况。

如果您在 Apache 上使用基于 PHP 的网站,则很可能会发生这种情况。

如果您正在使用 PHP,请检查 conf.d/php.conf 中的 php 配置中的以下配置:

<Files *.php>
    SetOutputFilter PHP
    SetInputFilter PHP
    LimitRequestBody 524288
</Files>

删除该LimitRequestBody行并观察。错误应该消失。

另外,如果您使用 apache 和 php,以下版本可以完美运行。apache 2.0.43 和 php 4.3.0_RC1

注意:此答案完全基于我过去对我遇到的错误和问题的研究。请让我知道您当前的配置和反馈。

答案2

好吧,分段错误是程序错误的一种表现;它与内存太少无关。当程序试图访问不允许访问的内存时,就会发生分段错误。

如果 Apache 中发生这种情况,则需要启用核心转储并重新启动 httpd 进程。在Apache 文档

答案3

什么原因可能导致这些错误?

有一件事对诊断问题很有帮助,那就是尝试找出发生此错误时正在查看哪些页面/资源。如果您能够检查访问日志以查看在发生段错误时发生了什么。

可能是某个 php 脚本或其他程序正在执行导致崩溃的操作。一旦您找出导致崩溃的页面/文件,您就可以深入研究它正在执行的操作,或者是否有可用的错误修复。

答案4

我经常看到这种情况,这是由 PHP 脚本执行无限递归引起的。您可以使用 error_log 上的时间戳来识别 access_log 中可能导致问题的请求。如果其中有任何 PHP 脚本请求,您(或您的开发人员)应该查看这些页面,看看那里是否存在任何潜在问题。

吉姆。

相关内容