环境:
PHP 5.5.38
nginx version: nginx/1.10.2
配置
[php-fpm]
pm = static
pm.max_children = 50
pm.max_requests = 1024
...
;request_terminate_timeout = 0
[nginx.conf]
worker_processes auto;
events {
worker_connections 1024;
}
http{
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
}
间歇性的出现这个问题, 也不重复, 请问大家碰到这种情况应如何排查呢?谢谢.
1
BOYPT 2017-04-26 17:17:08 +08:00 1
一般跟配置关系不大,是 php 进程的段错误;用 gdb 打开 coredump ,看具体涉及哪一块的错误(一般是外部模块),更新一下代码之类的。
也有人遇到是日志文件太大导致 php 的 SIGSEGV |
2
justyy 2017-04-26 17:23:46 +08:00 1
我的配置,仅供参考,
pm = ondemand pm.max_children = 5000 pm.process_idle_timeout = 10s; pm.max_requests = 500 |
3
momocraft 2017-04-26 17:29:43 +08:00 1
可以试试控制条件做压力测试: 不同 php build ,不同 dist ,不同机器 等
|
4
eecjimmy OP |
5
kungfuchicken 2017-04-26 17:52:43 +08:00
把服务器 coredump 打开,然后 gdb 跟下 dump 文件看看
|
6
eecjimmy OP @kungfuchicken 嗯, 要重新编译个, 里面还不少扩展.
|
7
eecjimmy OP @kungfuchicken 就怕到时候重新编译了, 又复现不到了, 就尴尬了.
|
8
kungfuchicken 2017-04-26 17:58:31 +08:00
@eecjimmy 在 --disable-debug 的条件下, coredump 文件一样会生成, gdb bt 一下能看到最后的栈追踪,基本上就能确定是哪的问题了
|
9
eecjimmy OP @kungfuchicken 哦哦,我试了下没生成,晚上回去再试试
|
10
ericFork 2017-04-26 22:52:43 +08:00
你用 APCu 了没?如果用了的话禁用试试
|
11
eecjimmy OP @kungfuchicken 但是我看文档里面有这样的说法
```To get a backtrace with correct information you must have PHP configured with --enable-debug!``` |
12
eecjimmy OP |
14
kungfuchicken 2017-04-27 17:08:30 +08:00
@eecjimmy 说了,coredump 文件的生成,是 Linux 系统的配置项目,跟 PHP 的编译参数无关
|
15
eecjimmy OP @kungfuchicken
gdb 的相关信息如下, 但是真的看不懂呢 gist: https://gist.github.com/eecjimmy/66f79ca747bac2fa63ddf5fca0f7ef62 |
16
kungfuchicken 2017-05-05 19:39:40 +08:00
@eecjimmy 内核 bug, 试试升级到 php5.6 吧
|
17
eecjimmy OP @kungfuchicken 开发环境就是这个版本,项目马上上线,不敢乱调环境呀,尴尬了!
|