• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php-fpm重启导致的程序执行中断问题详解
    POST TIME:2021-10-18 04:28

    背景和初步排查

    1是error log 丢日志了
    2是程序执行过程中操作完sendPresent后down掉了,导致没写入mongo
    -第一个情况工作多年的经验来看应该不至于,那就先根据第二种情况继续查吧

    [wu.daolin@web001.m6~]$ grep "2017 05:28" /var/log/php-fpm.log
    [25-Jun-2017 05:28:01] NOTICE: Terminating ...

    跟订单时间刚好吻合,那肯定有必要研究下了

    熟悉下 php-fpm 的管理

    php-fpm 是通过 php-fpm这个命令进行管理的,我们先看下这个命令

    man php-fpm

    这里有提到,php-fpm then responds to several POSIX signals php-fpm 会对下面几个信号作(自己的)处理

    动手验证下

    sudo kill -QUIT {php-fpm-pid}

    [26-Jun-2017 13:58:22] NOTICE: Finishing ...            
    [26-Jun-2017 13:58:22] NOTICE: exiting, bye-bye!

    sudo kill -TERM {php-fpm-pid}

    [26-Jun-2017 13:59:21] NOTICE: Terminating ...            
    [26-Jun-2017 13:59:21] NOTICE: exiting, bye-bye!

    sudo kill -USR2 12583

    [26-Jun-2017 14:00:48] NOTICE: Reloading in progress ...          
    [26-Jun-2017 14:00:48] NOTICE: reloading: execvp("/usr/sbin/php-fpm", {"/usr/sbin/php-fpm", "--daemonize"})    
    [26-Jun-2017 14:00:48] NOTICE: using inherited socket fd=8, "10.30.60.87:9000"        
    [26-Jun-2017 14:00:48] NOTICE: using inherited socket fd=8, "10.30.60.87:9000"        
    [26-Jun-2017 14:00:48] NOTICE: fpm is running, pid 12696          
    [26-Jun-2017 14:00:48] NOTICE: ready to handle connections

    从验证结果推断

    在 05:28:01这个时间有人给php-fpm 发送了SIGTERM信号,在这个点发生很可能是个定时任务, 确认果然是这样 28 5 * * * root /etc/init.d/php-fpm restart> /dev/null

    我们的 php-fpm 管理

    看下这个情况下nginx的反应

    总结原因

    替代方案

    与sa 的问答

    sa 说了3点意见

    我回复

    尾声

    改成 SIGQUIT 信号nginx里还是有 104: Connection reset by peer, 看来手册里说SIGQUIT: graceful stop 也不能保证一次请求里的所有动作都执行完啊

    最终结果 去掉这个定时重启php-fpm 的任务, 已经3个多月了,没发现问题,oh yeah~

    参考文档

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

    您可能感兴趣的文章:
    • Nginx和PHP-FPM的启动、重启、停止脚本分享
    • 监控php-fpm并自动重启服务的shell脚本
    • Centos7重启apache、nginx、mysql、php-fpm命令方法
    • PHP脚本监控Nginx 502错误并自动重启php-fpm
    上一篇:详解提高使用Java反射的效率方法
    下一篇:PHP常见的几种攻击方式实例小结
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信