我在我的 apace error.log 中有这个:
[Fri Sep 18 08:10:54 2009] [notice] child pid 9178 exit signal Segmentation fault (11)
[Fri Sep 18 08:11:41 2009] [notice] child pid 9187 exit signal Segmentation fault (11)
[Fri Sep 18 08:12:12 2009] [notice] child pid 9204 exit signal Segmentation fault (11)
[Fri Sep 18 08:12:13 2009] [notice] child pid 9202 exit signal Segmentation fault (11)
[Fri Sep 18 08:14:45 2009] [notice] child pid 9251 exit signal Segmentation fault (11)
它在我添加 vhost.conf 文件的同一天开始。于是我恢复到原来的文件做了一个apache2ctl重启。不幸的是,它仍在发生。
Apache 似乎正在为页面提供服务。
有任何想法吗?
干杯,
内森。
Nathan,尝试停止 Apache,并在前台启动它(调试,非线程),这可能会泄露更多关于导致段错误的线索。
话虽如此,无论如何它都不应该出现段错误,所以它是一个错误,但是,如果您知道是什么导致了它,它可能是您可以修复的。
apache2 -X
Run Code Online (Sandbox Code Playgroud)
此外(不太可能揭示此问题的全部原因),来自...的任何警告/错误
apache2ctl -t
Run Code Online (Sandbox Code Playgroud)
……?
最后,您加载到 Apache 中的所有模块都“经过认证”了吗,也许您可以将其中的一半注释掉,看看问题是否消失,然后从那里继续进行分而治之的二进制搜索。
您还可以查找由段错误产生的任何核心转储,也许在 /tmp 中?如果您确实找到了一些,请尝试通过 gdb 运行它...
gdb apache2 -c /tmp/core.<pid>
Run Code Online (Sandbox Code Playgroud)
Sig11 通常仅出于以下两个原因之一而发生:
坏程序。
在 Apache 的情况下,统计上不太可能是核心 Apache 代码中的错误。
模块故障更为常见。无论是模块安全地处理它正在处理的代码或库中的异常的方式。或者它与 Apache 选择的 MPM 模型交互的方式。当模块以这种方式行为不端时,它会在将数据返回给 Apache 子进程之前无法控制地退出,从而产生段错误。
查看自上次生效以来所做的所有更改。正如Lee B所说,这是使用版本控制的完美示例。
稍微复杂一点的是,您通常可以通过graceful在更改 Apache 的模块设置后发出而不是完全重新启动来产生相同的行为。您可以通过停止和启动 Apache 来排除这种情况。
硬件不好。
如果您确定错误与您的配置更改一致,并且您没有看到对系统的任何其他不良影响,那么您可能可以排除这种情况。但是,如果您没有其他途径,则可能值得考虑。CPU 和 RAM 是典型的罪魁祸首。
| 归档时间: |
|
| 查看次数: |
16161 次 |
| 最近记录: |