如何调试 php5-fpm 内核段错误?

如何调试 php5-fpm 内核段错误?

几周前,我的 OSSEC 守护进程开始向我发送有关段错误的系统日志php5-fpm。以下是日志的一部分:

Dec 19 15:09:38 mydropplet kernel: [165740.998932] php5-fpm[26936]: segfault at 7fff621ad001 ip 000000000079fe74 sp 00007fff621a5040 error 6 in php5-fpm[400000+800000]

因此我查看了我的错误日志,以查看是否存在导致段错误的 PHP 错误(因为我不确定这意味着什么,但听起来像是 PHP 核心中的问题)我的错误日志中有以下内容(已删除识别信息):

2015/12/19 01:36:49 [error] 6177#0: recv() failed (111: Connection refused) while resolving, resolver: xxx.xxx.xxx.xxx:xx
2015/12/19 01:36:54 [error] 6177#0: gv.symcd.com could not be resolved (110: Operation timed out) while requesting certificate status, responder: gv.symcd.com
2015/12/19 02:00:06 [error] 6178#0: recv() failed (111: Connection refused) while resolving, resolver: xxx.xxx.xxx.xxx:xx
2015/12/19 02:00:11 [error] 6178#0: recv() failed (111: Connection refused) while resolving, resolver: xxx.xxx.xxx.xxx:xx
2015/12/19 02:00:16 [error] 6178#0: recv() failed (111: Connection refused) while resolving, resolver: xxx.xxx.xxx.xxx:xx
2015/12/19 02:00:21 [error] 6178#0: recv() failed (111: Connection refused) while resolving, resolver: xxx.xxx.xxx.xxx:xx
2015/12/19 02:00:26 [error] 6178#0: recv() failed (111: Connection refused) while resolving, resolver: xxx.xxx.xxx.xxx:xx
2015/12/19 02:00:31 [error] 6178#0: recv() failed (111: Connection refused) while resolving, resolver: xxx.xxx.xxx.xxx:xx

所以我仔细查看了我的系统日志,发现里面有这个。这是我在 OSSEC 的电子邮件中看到的日志的同一部分:

Dec 19 09:44:06 mydomain kernel: [146209.162601] php5-fpm[13787]: segfault at 7fff621ad001 ip 000000000079fe74 sp 00007fff621a5040 error 6 in php5-fpm[400000+800000]

以下是其余的日志记录:

Dec 19 09:44:59 mydomain postfix/anvil[26420]: statistics: max connection rate 1/60s for (smtp:195.22.126.137) at Dec 19 09:41:39
Dec 19 09:44:59 mydomain postfix/anvil[26420]: statistics: max connection count 1 for (smtp:195.22.126.137) at Dec 19 09:41:39
Dec 19 09:44:59 mydomain  postfix/anvil[26420]: statistics: max cache size 1 at Dec 19 09:41:39
[...]
Dec 19 09:41:39 mydomain postfix/smtpd[26418]: connect from unknown[195.22.126.137]
Dec 19 09:41:39 mydomain postfix/smtpd[26418]: disconnect from unknown[195.22.126.137]

我对自管理服务器还很陌生,所以我不知道如何调试这个。我在这个服务器上管理我的个人网站,几周前我唯一做的事情就是从 Wordpress 存储库安装了一个新插件,由于没有时间研究正确的配置,我匆忙激活并配置了它,结果它搞坏了我的网站前端。所以我停用了它,并决定稍后再试一试。之后内核错误开始发生。

所以我完全卸载了插件,以为这可能是原因,但这并没有解决任何问题。该插件只能对我的 Web 目录具有写权限,并且无法更改任何核心配置设置。我不确定这两者之间是否有联系,但我想提一下。

我也从 10 月开始运行这个 PHP 配置,没有任何问题。我没有在 PHP 中添加任何新的/奇怪的模块。它基本上是开箱即用的,除了一些安全预防措施。在看到错误之前,我执行了 dist-upgrade 作为我定期维护的一部分:

sudo apt-get dist-upgrade
sudo apt-get update
sudo shutdown -r now

这与插件安装的时间差不多。为了修复错误,我再次执行了命令,心想如果存在错误,肯定会推送补丁。然而,这没有帮助。所以我不知道该怎么做才能解决这个问题。

更新:我回滚到之前的快照,一切正常,大约一个星期后,圣诞节后不久,我又开始收到有关相同段错误问题的电子邮件。所以我又回到了原点。

任何建议都很好!我正在跑步LEMP Ubuntu 14.04 LTS 服务器。我该如何调试这样的问题?提前感谢您的帮助。

答案1

如果您认为错误与 Nginx 有关,则应发布相关的 Nginx 日志。resolver您发布的日志中有一些参考,可能与 Nginx 有关。

如果 Nginx 解析器有故障,您可能能够通过在 Nginx 配置中使用原始 IP 而不是域名来解决该问题。

另外,请检查您当前的版本php5-fpm及其 Git 存储库中可用的最新版本。然后检查项目的变更日志,查看是否有比您正在使用的版本更新的更改。如果有更新的版本可用,请参阅升级。

段错误意味着软件存在错误,而不是配置问题。即使配置不正确,软件也不应该出现段错误。由于出现段错误的原因似乎php5-fpm是进程,如果最新版本中未修复该错误,请考虑在其邮件列表或问题跟踪器上报告该错误。

也有可能运行的软件php5-fpm就是发生段错误的那个软件,php5-fpm它只是传递段错误通知的信使。同样,该php5-fpm项目将成为找出该软件段错误的方法的权威参考。

相关内容