Shell 脚本监控 Nginx 502 Bad Gateway 自动重启 php-fpm¶
Shell 脚本监控¶
此脚本可暂时解决 php-fpm 偶尔因为内存不足等挂掉导致的 Nginx 502 Bad Gateway 错误。
需确保 VPS 系统已安装 curl, CentOS 可以执行:yum install curl ;Debian/Ubuntu 可以执行:apt-get install curl 安装。
用 WinSCP 或 ssh 登录 VPS 使用 vi 命令在/root 目录下创建 check502.sh 脚本,代码如下:
#!/usr/bin/env bash
CheckURL="https://example.com/wp-admin/"
STATUS_CODE=`curl -o /dev/null -m 10 --connect-timeout 10 -s -w %{http_code} $CheckURL`
#echo "$CheckURL Status Code:\t$STATUS_CODE"
if [ "$STATUS_CODE" = "502" ]; then
systemctl restart php-fpm.service
fi
https://example.com/wp-admin/ 改为实际需要监控地址,需要注意如果开启了缓存,缓存页面就算 php 挂了,也不会马上出 502 状态 —— 缓存失效前都还可以正常访问,此时 http 状态码是 200
CentOS Stream release 8 使用 OneinStack 安装的 LNMP 使用 systemctl restart php-fpm.service 可正常重启 php-fpm,而使用 service php-fpm restart 在 SSH 中执行可正常运行,在定时任务中无法正常工作。
Debian / Ubuntu 系统可尝试使用 /etc/init.d/php-fpm restart
修改SH文件权限¶
添加自动执行任务¶
用 crontab 一分钟执行一次 /root/check502.sh,crontab -e 添加如下任务: