php 502状态码,Nginx502状态码处理

问题描述

最近偶然收到报警邮件,Nginx 502状态码

环境是Nginx+php-fpm 配置 8核16G

5b12156bfbf7?utm_campaign=hugo

yds.png

分析处理:

根据经验应该是php-fpm原因

(1) php-fpm进程挂掉起不来

(2) php-fpm的9000端口不通

(3) 请求过多,php-fpm处理队列

登录后台服务器查看php-fpm进程和端口等

1. php-fpm 进程存在

# ps auxf | grep 'php-fpm: master' |grep -v grep

root 31590 0.0 0.0 316140 9348 ? Ss 14:26 0:00 php-fpm: master process (/usr/local/etc/php-fpm.conf)

2. 9000端口是通的

# telnet 127.0.0.1 9000

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

3. php-fpm 进程只有12个

# ps auxf | grep 'php-fpm' | wc -l

12

由上命令结果看出php-fpm进程较少,先增加php-fpm,配置文件php-fpm.conf

pm = dynamic

pm.max_children = 600

pm.start_servers = 300

pm.min_spare_servers = 300

pm.max_spare_servers = 500

pm.max_requests = 6000

修改后重启php-fpm,完美收工。

过一段时间后又偶然收到后台报警502。

马上登录后台服务器查询进程和端口,都正常。

开始查看日志。

(1) 查看nginx访问日志502

5b12156bfbf7?utm_campaign=hugo

nginx-access.png

(2) 查看nginx error日志

查看到connect() failed (111: Connection refused) while connecting to upstream

应该是php-fpm问题

5b12156bfbf7?utm_campaign=hugo

nginx-error.png

(3) 查看php-error.log日志

看到php-fpm每分钟都在重启

NOTICE: Finishing ...

NOTICE: exiting, bye-bye!

5b12156bfbf7?utm_campaign=hugo

php-error.png

(4) 去查看计划任务。有个脚本每分钟执行一次。

内容是:

(1) 判断php-fpm进程是否存在,如不存在,则重新启动php-fpm;

(2) 判断剩余内存,如果剩余内存<1600M,则重新启动php-fpm;

(5) 临时停止这个脚本后,php-fpm未重启过。

(6) free -m 查看内存还剩200M,所以计划任务脚本会重启php-fpm;但是重启php-fpm后buffer/cache未释放。所以每分钟会重启php-fpm;

在脚本中添加手动释放内存,恢复正常;

php_restart (){

mem=`free -m|grep Mem|awk '{print $4}'`

if [ ${mem} -lt 1600 ];then

echo "3" > /proc/sys/vm/drop_caches

/etc/init.d/php-fpm restart

echo `date` >> /tmp/phprestart.log

fi

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值