监测服务器php-fpm情况,自动重启。

75 篇文章 1 订阅

场景①:单机部署的情况下;php-fpm挂了导致服务器接口返回500报错。因为情况很多,可能是高并发或者其他意外情况导致的线程不够用,内存不够,CPU占满等情况。

场景②:多服务器负载均衡部署情况下;可能某台服务器会php-fpm因很多情况也会和场景①的情况。

如果是大晚上的突然挂掉岂不是很尴尬?怎么处理呢?

单机情况处理方案:cron+php脚本检测

①php脚本
<?php
$url = '要监测的网站域名';
$cmd = 'service php-fpm restart';
for($i = 0; $i < 1; $i ++){
    $exec = "curl  connect-timeout 3 -I $url 2>/dev/null";
    $res = shell_exec($exec);
    echo "\r\n".$res.'啥也没有';
    if(stripos($res, '502 Bad Gateway') !== false){
       echo "\r\n出现502 并重启php-fpm".date('Y-m-d H:i:s');
       $ss= shell_exec($cmd);
       echo "\r\n".$ss;
       exit();
    }elseif($res==''){
        echo "\r\n程序返回是空 并重启nginx".date('Y-m-d H:i:s');
        $cmd = 'service nginx restart';
        $ss= shell_exec($cmd);
        echo "\r\n".$ss;
        exit();
    }else{
        echo "\r\n程序正常";
    }
}
②添加定时任务 如:执行时间自己决定。
*/30 * * * * /usr/bin/php /root/nginx-status.php >> /var/log/nginx-log.log

多服务器处理方案:各台服务器上写shell脚本 +脚本接口访问报错时做“标示”

#可参考:http://www.360doc.com/content/18/0612/16/41766228_761758059.shtml;也是做标示去判断是否php-fpm挂!

#!/bin/bash
#check php-fpm server up/down

while :
do
sleep 15;
/usr/bin/curl https://api.xxx.com/public/status.php  << ! > /alidata/server/fpm.log 
quit
!
timestamp=`date '+%Y-%m-%d %H:%M:%S'`
content=$(cat /alidata/server/fpm.log)
if [ "$content" = "ok" ];then
echo -e "ok\n" ;
else 
/etc/init.d/php-fpm restart

echo -e "$timestamp"" php-fpm restart\n" >> /alidata/server/restart.log;
fi
done

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值