PHP脚本监控Nginx 502错误并自动重启php-fpm

服务器时不时出现Nginx 502 Bad Gateway,如果在电脑旁边还好,要是半夜或者出去了,怎么办?

没关系,写个脚本检测服务状态,发现异常,自动重启。

自动重启脚本:

<?php 

$url = ‘http://blog.rebill.info‘; 

$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(); 

        } 

}

原理就是用curl获取HTTP头,发现502状态码就执行重启php-fpm的命令。

url和cmd根据实际情况改成自己的。然后放到crontab里一分钟执行一次。

*/1 * * * * /usr/bin/php /root/crontab/nginx502.php
时间: 2024-10-11 21:28:11

PHP脚本监控Nginx 502错误并自动重启php-fpm的相关文章

shell 练习(08)——Nginx 502 错误检查处理

1. 题目 服务器上跑的是 LNMP 环境,近期总是有502现象.502为网站访问的状态码,200正常,502错误是Nginx最普遍常见的错误状态码.由于502错误码只是暂时的,并且只要重启 php-fpm 服务则502消失,但不重启的话,则会一直持续很长一段时间.所以,有必要写一个监控脚本,监控访问日志的状态码,一旦发生502,则自动重启一下 php-fpm 服务. 设定: 1) Nginx 的 access_log 在 /data/logs/nginx/access.log 2) 脚本死循环

一个简单的监控网站是否正常并自动重启服务的shell脚本

#!/bin/sh if [ -z "`curl --connect-timeout 15 --max-time 20 --head --silent http://localhost/index.php|head -n 1|grep '200'`" ];then echo -e "$(date +%Y-%m-%d)\n" killall nginx killall php-fpm /usr/local/nginx/sbin/nginx -c conf/nginx.

nginx 502 错误

今天帮朋友处理一个程序报错,重启nginx服务之后,发现首页打不开了,但是静态文件可以打开 经检查nginx 服务器正常运行,重启无数次仍然502错误,考虑到静态文件可以打开,怀疑可能是php 脚本程序没有正常运行,运势 ps -aux |grep php-fpm 没有相关进程,进一步产看网络链接状态 netstat -anpo |grep 9000 仍没有内容,可以断定是php-fpm问题,启动该进程,我的安装目录在usr/local/nginx/php/php-fpm ./sbin/php-

502 Bad Gateway 自动重启脚本

一个简单的脚本,用来监控502的,如果遇到502,自动重启PHP进程.适用于LNMP环境. 以下文件,存放于 /root 或其它目录: #!/bin/bash MY_URL="http://www.tarena.com.cn/" RESULT=`curl -I $MY_URL|grep "HTTP/1.1 502"` if [ -n "$RESULT" ]; then /etc/init.d/php-fpm restart fi 给予可执行权限:

linux运维学习shell脚本监控nginx服务

菜鸟学习shell脚本后,动手练手简单小实验,使用shell脚本判断nginx是否正常运行,如果没有运行将nginx服务启动起来. 一.基于进程判断 1.获取nginx进程来判断该服务是否正常启动. ps -ef | grep nginx | grep -v grep | wc -l    输出进程行数 然后判断是否为2 如果不是说明该服务没有启动. grep -v grep  用来排除掉您所使用grep产生的进程. 2.shell 脚本编写 先定义一个变量Web #!/bin/bash Web

linux上监控tomcat down掉后自动重启tomcat

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545; min-height: 14.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px;

PHP 脚本自动监控 Nginx 504错误

#!/usr/bin/php <?php error_reporting(E_ERROR); define("EMAIL","[email protected]");//你的email地址 define("TIMEOUT",5);//读取网站超时时间,5秒 function curl_get($url){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_set

nginx 502错误 failed (13: Permission denied)

安装好nginx和php-fpm后出现502的错误 查找原因是说php-fpm没有启动 ,但在我实际中这个进程是启动的 找了半天没找到原因,查看nginx日志后 发现以下错误 [crit] 2686#0: *1 connect() to unix:/var/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 192.168.50.1, server: [...], reque

zabbix 监控nginx语法错误

由于一些自动化工具原因nginx 配置的时间会出现域名错误,只是在reload的时间才报错,很耽误时间,晚上还要起来处理. ngx的机器安装zabbix_sender #! /bin/sh ## 通过zabbix sender 上报nginx 配置文件的检查结果,避免配置文件长时间语法错误 ip=`/sbin/ifconfig | grep 'inet addr:' | grep -v "127.0.0.1" | awk -F ":" '{print $2}' |