docker 运行 php nginx_php脚本监测nginx和php-fpm运行状态

公司网站经常会遇到访问出现502,我理解的原因有php-fpm资源不够,通常大的并发下会经常出现这个问题,或者某些进程执行时间较长。

我的解决方案是 使用 crond 定时查看进程运行的状态,发现不对立马重启。

1.我用的是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 "rn".$res.'啥也没有';
    if(stripos($res, '502 Bad Gateway') !== false){
       echo "rn出现502 并重启php-fpm".date('Y-m-d H:i:s');
       $ss= shell_exec($cmd);
       echo "rn".$ss;
       exit();
    }elseif($res==''){
        echo "rn程序返回是空 并重启nginx".date('Y-m-d H:i:s');
        $cmd = 'service nginx restart';
        $ss= shell_exec($cmd);
        echo "rn".$ss;
        exit();
    }else{
        echo "rn程序正常";
    }
}

2.添加定时任务 crond

2.1)vi /etc/crontab

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

每隔30分钟执行一次root下的nginx-status.php脚本 并将结果存在log文件中:

*/30 * * * * /usr/bin/php /root/nginx-status.php >> /var/log/nginx-log.log

#加载任务,使之生效
crontab /etc/crontab
#查看任务
crontab -l

945793406b2936a12596805135ca474e.png

有问题可以私下沟通!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值