V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
eecjimmy
V2EX  ›  PHP

PHP -fpm 间歇性的 child **** exited on signal 11 (SIGSEGV)

  •  
  •   eecjimmy · 2017-04-26 16:46:03 +08:00 · 3969 次点击
    这是一个创建于 2557 天前的主题,其中的信息可能已经有所发展或是发生改变。

    环境:

    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;
    }
    
    
    

    间歇性的出现这个问题, 也不重复, 请问大家碰到这种情况应如何排查呢?谢谢.

    17 条回复    2017-05-05 20:27:05 +08:00
    BOYPT
        1
    BOYPT  
       2017-04-26 17:17:08 +08:00   ❤️ 1
    一般跟配置关系不大,是 php 进程的段错误;用 gdb 打开 coredump ,看具体涉及哪一块的错误(一般是外部模块),更新一下代码之类的。
    也有人遇到是日志文件太大导致 php 的 SIGSEGV
    justyy
        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
    momocraft
        3
    momocraft  
       2017-04-26 17:29:43 +08:00   ❤️ 1
    可以试试控制条件做压力测试: 不同 php build ,不同 dist ,不同机器 等
    eecjimmy
        4
    eecjimmy  
    OP
       2017-04-26 17:52:01 +08:00
    @BOYPT @justyy @momocraft 感谢, yum 安装的, 没有--enable-debug, 回头要换个环境再试试.
    kungfuchicken
        5
    kungfuchicken  
       2017-04-26 17:52:43 +08:00
    把服务器 coredump 打开,然后 gdb 跟下 dump 文件看看
    eecjimmy
        6
    eecjimmy  
    OP
       2017-04-26 17:54:11 +08:00
    @kungfuchicken 嗯, 要重新编译个, 里面还不少扩展.
    eecjimmy
        7
    eecjimmy  
    OP
       2017-04-26 17:54:30 +08:00
    @kungfuchicken 就怕到时候重新编译了, 又复现不到了, 就尴尬了.
    kungfuchicken
        8
    kungfuchicken  
       2017-04-26 17:58:31 +08:00
    @eecjimmy 在 --disable-debug 的条件下, coredump 文件一样会生成, gdb bt 一下能看到最后的栈追踪,基本上就能确定是哪的问题了
    eecjimmy
        9
    eecjimmy  
    OP
       2017-04-26 18:34:56 +08:00 via iPhone
    @kungfuchicken 哦哦,我试了下没生成,晚上回去再试试
    ericFork
        10
    ericFork  
       2017-04-26 22:52:43 +08:00
    你用 APCu 了没?如果用了的话禁用试试
    eecjimmy
        11
    eecjimmy  
    OP
       2017-04-27 09:27:57 +08:00
    @kungfuchicken 但是我看文档里面有这样的说法
    ```To get a backtrace with correct information you must have PHP configured with --enable-debug!```
    eecjimmy
        12
    eecjimmy  
    OP
       2017-04-27 09:28:16 +08:00
    eecjimmy
        13
    eecjimmy  
    OP
       2017-04-27 10:14:56 +08:00
    @ericFork 没有使用, 之前有装 apc 扩展, 然后已经卸载了, 还有偶现这个问题.
    kungfuchicken
        14
    kungfuchicken  
       2017-04-27 17:08:30 +08:00
    @eecjimmy 说了,coredump 文件的生成,是 Linux 系统的配置项目,跟 PHP 的编译参数无关
    eecjimmy
        15
    eecjimmy  
    OP
       2017-05-05 17:48:52 +08:00
    @kungfuchicken
    gdb 的相关信息如下, 但是真的看不懂呢
    gist: https://gist.github.com/eecjimmy/66f79ca747bac2fa63ddf5fca0f7ef62
    kungfuchicken
        16
    kungfuchicken  
       2017-05-05 19:39:40 +08:00
    @eecjimmy 内核 bug, 试试升级到 php5.6 吧
    eecjimmy
        17
    eecjimmy  
    OP
       2017-05-05 20:27:05 +08:00 via iPhone
    @kungfuchicken 开发环境就是这个版本,项目马上上线,不敢乱调环境呀,尴尬了!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5462 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:55 · PVG 16:55 · LAX 01:55 · JFK 04:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.