(转)Nginx PHP-FPM 502 504 自动重启脚本

网上有很多方法了:增加 php-cgi 进程 增加时间 等等 试了很多都没法完全杜绝 502 和 504 的发生,而且一旦发生了 502 错误,而且我们又不在电脑旁时就可能会损失大量的流量,于是就想让服务器自动检测 php 是否运行正常,若不正常重启之,这样就可以在 php 出现 502 等情况时尽快恢复正常。完全杜绝的方法还在摸索中…

首先新建一个 x.php 文件放入网站根目录:

<?php echo ‘onens.com’;

然后 编写脚本 内容如下。此脚本并无判断是否是 502 还是 504 还是其他,只要 http 请求返回值不是 200,就重启!

vim restart-php-fpm.sh #!/bin/sh wget http://onens.com/x.php –spider re=$? if [ $re = "1" ]; then echo "##" "502" $(date +"%y-%m-%d %H:%M:%S") "restart php-fpm " | mail -s "Critical Info" 13888888888@139.com /etc/init.d/php-fpm restart echo "restart php-fpm" fi

添加 crontab:

chmod 755 restart-php-fpm.sh crontab -e */1 * * * * (/path/restart-php-fpm.sh >> /path/restart-php-fpm.log) * * */7 * * rm -rf /path/restart-php-fpm.log

path 修改为路径,第一句是每分钟检测一次,第二句是每周删除一次运行日志。
当重启后发一封邮件到指定的邮箱,推荐 139 邮箱,因为有免费的短信提醒,若连续重启可以及时的检查服务器。
至此,大功告成!

本条目发布于 
2011 年 01 月 05 日。属于 
Linux
PHP 分类,被贴了 
CentOS
Linux
Nginx
PHP
PHP-FPM 标签。转自:
http://blog.onens.com/nginx-php-fpm-auto-restart.html