nginx+php-fpm出现502(Bad Gateway)错误的分析与解决

2014 年 7 月 10 日11:44:21 1 10,481 views

买了一台云服务器后,系统自动给安装了nginx 1.6 + php 5.3.28 + mysql 5.5

把PHP程序放进云服务器后,首次测试程序访问正常,速度正常


但是把程序放到线上访问后,会逐步发现,访问的PHP页面越来越慢,最后直接出现502 bad gateway问题。

(在php-fpm.conf中,原本就设置了 pm = static 模式,并设置 pm.max_children = 128)


分析:

打开nginx访问日志,访问量并不高,平均每秒也就10个不到的请求IP,所以,按理,这点访问量,不可能导致出现PHP请求过多,出现502的。

打开php-fpm.conf日志,出现很多PHP警告问题,


再调整php-fpm的pm模式为pm = dynamic,

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 10000


重启php-fpm后,用ps查看php进程:

ps -ef |grep -c php-fpm
    22

刚开始,访问PHP很快,然后越来越慢,再次查看进程

ps -ef |grep -c php-fpm
    28


从日志和进程变化来看,可以断定是PHP程序出现的问题,是PHP请求太多造成的。大概就是PHP页面中,调用了太多PHP的请求。把这个问题告诉开发后,开发解决之后,服务器再没出现502。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • qianfuyu 0

      emergency_restart_threshold = 60
      emergency_restart_interval = 60s
      限制php死循环或者单个进程吃掉所有的php资源