Nginx出现502后自动重启脚本

By | 2011/08/05

相信很多使用nginx的朋友都遇到过502, 出现502 bad gateway很烦人了,FastCGI进程不够使用, 执行超时,FastCGI缓冲不足等都会造成502错误, 解决502 bad gateway的最好最终极的方法就是重启php-fpm。

在没有更好的办法就只有重新启动php,咱们要做个重启php-fpm的脚本,。

cd /home
vi restart-php-fpm.sh

在home建立一个脚本restart-php-fpm.sh
输入如下代码,这个代码就是重启php-fpm的脚本了,脚本中的http://www.dengor.com 记得改成要监控502的网站

#!/usr/bin/php
<?
$url = ‘http://www.dengor.com’;
$cmd = ‘/usr/local/php/sbin/php-fpm restart’;
for($i = 0; $i < 5; $i ++){ $exec = “curl –connect-timeout 3 -i $url 2>/dev/null”;
$res = shell_exec($exec);
if(stripos($res, ’502 Bad Gateway’) !== false){
shell_exec($cmd);
exit();
}
}
?>

再设置crontab让脚本自己运行, 可以参看Centos安装和运行crontab.
先设置restart-php-fpm.sh的权限为755

chmod 755 /home/restart-php-fpm.sh

运行crontab -e

crontab -e

设置restart-php-fpm.sh自动一直运行执行

* * * * * /home/restart-php-fpm.sh

查看crontab有没有成功运行

crontab -l