记一次由nginx报502 bad gateway的错误总结

  • 2017-05-15
  • 1308
  • 0

今天在部署研发自测环境过程中,出现某些接口200正常,而有些却报502 bad gateway。

于是按照以下顺序排查:

1、查看nginx错误日志,报 recv() failed (104: connection reset by peer)。

11

2、按理说nginx报502,一般都是proxy的后端程序有问题,于是查看php-fpm错误日志和linux系统错误日志。

22

33

看php-fpm错误日志和linux系统错误日志可以看出php worker进程已core dump,且原因为signal 11。

3、于是网上查阅signal 11原因,来源:常见 core dump 原因分析signal 11 – SIGSEGV

44

4、由于可以断定不可能是代码本身问题,只可能是php环境问题,于是:

  1. 修改php-fpm配置,只起一个worker进程
  2. kill掉原先的worker进程,重启php-fpm
  3. strace -p  pid

strace的调用结果显示:

55

以上可以看出,在执行redis相关代码时,发生 process 1301 detached。

于是可以锁定出是redis的问题,加上上面查阅的signal 11原因,猜想可能是安装的phpredis扩展包有bug。

最后重装了phpredis,问题迎刃而解。


上一篇:  下一篇:

评论

还没有任何评论,你来说两句吧

Copyright © 2014-2016 lxlxw All Right Reserved