网站首页 >> 建站技术 >> 正文
标题

宝塔Php/Nginx/MySQL数据库自动停止或者掉线后 脚本自动重启

kmwl520   2024-05-09 16:39:10   18℃   0
内容

有时候打开网站显示数据库连接错误,我就知道这是MySQL数据库自动停止了导致的网站打不开。我们可以在计划任务那里添加一个定时监控脚本,可以定时间监控MySQL、Nginx是否停止,如果停止就执行重启任务,并且记录日志到 /www 目录中。
原因分析:
一般遇到这种情况说明网站可能遭遇到了小规模cc攻击,数据库或者服务器内存承受不住而掉线了。人总是精力有限,不可能总长时间去盯着网站。一旦出现宕机,就会导致网站打不开、各类型网站服务中止,长时间也会影响网站排名流量。
解决方案:  (

1、MySQL监控  
定时监控MySQL是否停止了,如果停止就自动重启mysql数据库。
操作步骤:在宝塔面板,打开计划任务,选择shell脚本,输入任务名称、执行周期、脚本内容。
脚本内容如下:
pgrep -x mysqld &> /dev/null
if [ $? -ne 0 ];then
bash /www/server/panel/script/rememory.sh
/etc/init.d/mysqld start
echo "监控到MySQL已停止,已执行重启计划,时间: `date "+%Y-%m-%d %H:%M:%S"` " >> /www/mysql_jiankong.log
fi
效果如下:
 


2、Nginx监控
操作步骤:在宝塔面板,打开计划任务,选择shell脚本,输入任务名称、执行周期、脚本内容。
脚本内容如下:
pgrep -x nginx &> /dev/null
if [ $? -ne 0 ];then
/etc/init.d/nginx start 
echo "监控到Nginx已停止,已执行重启计划,时间: `date "+%Y-%m-%d %H:%M:%S"` " >> /www/Nginx_jiankong.log 
fi
监控日志:
监控重启记录日志存放在www目录:
 


一般我们只需要添加MySQL和Nginx监控,添加了以后记得测试一下任务是否有效,去宝塔停止MySQL、Nginx,然后执行一下这个任务,看看MySQL和Nginx状态是否开启。下面提供PHP、redis、memcached,有需要的可以参考。
3、PHP监控
操作步骤:在宝塔面板,打开计划任务,选择shell脚本,输入任务名称、执行周期、脚本内容。
脚本内容如下:
注意:下面第3行代码中的52~74是指php版本5.2-7.4
pgrep -x php-fpm &> /dev/null
if [ $? -ne 0 ];then
/etc/init.d/php-fpm-{52|53|54|55|56|70|71|73|74 } restart
echo "监控到php已停止,已执行重启计划,时间: `date "+%Y-%m-%d %H:%M:%S"` " >> /www/php_jiankong.log 
fi
4、redis监控
脚本内容如下
pgrep -x redis &> /dev/null
if [ $? -ne 0 ];then
/etc/init.d/redis start
fi
5、memcached监控
脚本内容如下:
pgrep -x memcached &> /dev/null
if [ $? -ne 0 ];then
/etc/init.d/memcached restart
fi

1、MySQL监控

  • 路径:宝塔面板--->计划任务,输入任务名称、执行周期、脚本内容
    脚本内容如下:

pgrep -x mysqld &> /dev/nullif [ $? -ne 0 ];then
bash /www/server/panel/script/rememory.sh   
/etc/init.d/mysqld start    
echo "监控到MySQL已停止,已执行重启计划,时间: `date "+%Y-%m-%d %H:%M:%S"` " >> /www/mysql_jiankong.log  
fi

2、Nginx监控

  • 路径:宝塔面板--->计划任务,输入任务名称、执行周期、脚本内容
    脚本内容如下:

pgrep -x nginx &> /dev/nullif [ $? -ne 0 ];then/etc/init.d/nginx start  
echo "监控到Nginx已停止,已执行重启计划,时间: `date "+%Y-%m-%d %H:%M:%S"` " >> /www/Nginx_jiankong.log  
fi




3、PHP监控

  • 路径:宝塔面板--->计划任务,输入任务名称、执行周期、脚本内容
    注意:下面第3行代码中的52~73是指php版本5.2 7.3
    脚本内容如下:

pgrep -x php-fpm &> /dev/nullif [ $? -ne 0 ];then/etc/init.d/php-fpm-{52|53|54|55|56|70|71|72|73|74} restart
echo "监控到php已停止,已执行重启计划,时间: `date "+%Y-%m-%d %H:%M:%S"` " >> /www/php_jiankong.log  
fi




4、Redis监控

  • 路径:宝塔面板--->计划任务,输入任务名称、执行周期、脚本内容
    脚本内容如下:

pgrep -x redis &> /dev/nullif [ $? -ne 0 ];then/etc/init.d/redis start
fi




5、memcached监控

  • 路径:宝塔面板--->计划任务,输入任务名称、执行周期、脚本内容
    脚本内容如下:

pgrep -x memcached &> /dev/nullif [ $? -ne 0 ];then/etc/init.d/memcached restart
fi
  • 说明:一般我们只需要添加MySQL和Nginx监控,其他的不需要添加,我只加了前面2个,添加了以后记得测试一下任务是否有效,去宝塔停止MySQL、Nginx,然后执行一下这个任务,看看MySQL和Nginx状态是否开启。



作者:阿然学编程
链接:https://www.jianshu.com/p/1d97d7e72e3a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


标签
点评

本文暂无评论 - 欢迎您

请填写验证码