
环境:
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 Apr 26, 2017 一般跟配置关系不大,是 php 进程的段错误;用 gdb 打开 coredump ,看具体涉及哪一块的错误(一般是外部模块),更新一下代码之类的。 也有人遇到是日志文件太大导致 php 的 SIGSEGV |
2 justyy Apr 26, 2017 我的配置,仅供参考, pm = ondemand pm.max_children = 5000 pm.process_idle_timeout = 10s; pm.max_requests = 500 |
3 momocraft Apr 26, 2017 可以试试控制条件做压力测试: 不同 php build ,不同 dist ,不同机器 等 |
5 kungfuchicken Apr 26, 2017 把服务器 coredump 打开,然后 gdb 跟下 dump 文件看看 |
6 eecjimmy OP @kungfuchicken 嗯, 要重新编译个, 里面还不少扩展. |
7 eecjimmy OP @kungfuchicken 就怕到时候重新编译了, 又复现不到了, 就尴尬了. |
8 kungfuchicken Apr 26, 2017 @eecjimmy 在 --disable-debug 的条件下, coredump 文件一样会生成, gdb bt 一下能看到最后的栈追踪,基本上就能确定是哪的问题了 |
9 eecjimmy OP @kungfuchicken 哦哦,我试了下没生成,晚上回去再试试 |
10 ericFork Apr 26, 2017 你用 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 Apr 27, 2017 @eecjimmy 说了,coredump 文件的生成,是 Linux 系统的配置项目,跟 PHP 的编译参数无关 |
15 eecjimmy OP @kungfuchicken gdb 的相关信息如下, 但是真的看不懂呢 gist: https://gist.github.com/eecjimmy/66f79ca747bac2fa63ddf5fca0f7ef62 |
16 kungfuchicken May 5, 2017 @eecjimmy 内核 bug, 试试升级到 php5.6 吧 |
17 eecjimmy OP @kungfuchicken 开发环境就是这个版本,项目马上上线,不敢乱调环境呀,尴尬了! |