什么会导致 PHP 应用程序在负载下间歇性地出现段错误?

什么会导致 PHP 应用程序在负载下间歇性地出现段错误?

这个问题在 stackoverflow 上发布过,但似乎更贴切……我正在对一个 PHP 应用程序(如果重要的话,它是一个 symfony 应用程序)进行一些负载测试(使用 jMeter)。我在 apache/mod_php 和 nginx/php_fpm 设置下都测试过它,并且使用了多个版本的 php、apache、nginx 和 linux,日志中充满了类似这样的错误。我很难弄清楚为什么会发生这些段错误:

[2013 年 3 月 13 日星期三 00:54:47] [通知] 子进程 pid 18830 退出信号总线错误 (7),/tmp/apache2-gdb-dump 中可能出现核心转储

[2013 年 3 月 13 日星期三 00:54:55] [通知] 子进程 pid 19016 退出信号总线错误 (7),/tmp/apache2-gdb-dump 中可能出现核心转储

[2013 年 3 月 13 日星期三 00:54:56] [通知] 子进程 pid 19002 退出信号总线错误 (7),/tmp/apache2-gdb-dump 中可能出现核心转储

[2013 年 3 月 13 日星期三 00:54:58] [通知] 子进程 pid 19041 退出信号总线错误 (7),/tmp/apache2-gdb-dump 中可能出现核心转储

当我从核心转储生成回溯时,我得到了

[新 LWP 588] [已启用使用 libthread_db 进行线程调试] 使用主机 libthread_db 库

“/lib/i386-linux-gnu/tls/i686/nosegneg/libthread_db.so.1”。核心由“/usr/sbin/apache2 -k start”生成。程序因信号 7 终止,总线错误。

0 lex_scan (zendlval=0xb6d2ce38) 位于 /build/buildd/php5-5.4.6/Zend/zend_language_scanner.c:2260

线程 1 (线程 0xb7485700 (LWP 588)):

0 lex_scan (zendlval=0xb6d2ce38) 位于 /build/buildd/php5-5.4.6/Zend/zend_language_scanner.c:2260

所以也许这与解析有关?然而,我对 php 内部机制了解甚少,所以不确定。这可能是什么原因造成的?

答案1

此错误报告指的是同一个问题:https://bugs.php.net/bug.php?id=52752

似乎是并发文件写入和读取导致了这个问题。错误报告还表明这个问题不会很快得到修复。

因此,我建议深入检查代码,并对访问同一文件的各种渠道使用不同的命名方案。

答案2

只需查看此链接即可。它对我有用。

http://www.php.net/git.php#buildconf_fail

相关内容