最近我在我的网络服务器上收到了很多分段错误警告。
警告如下所示:
[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 脚本请求,您(或您的开发人员)应该查看这些页面,看看那里是否存在任何潜在问题。
吉姆。