解决宝塔MySQL数据库频繁自动停止或掉线的方法

2023-11-07 0 889

正文:

早上我在检查网站时发现一个网站的流量明显减少了。打开网站后,显示数据库连接错误,我立刻意识到了问题的原因,很明显是 MySQL 数据库自动停止了。一般来说,遇到这种情况,说明网站可能遭受了小规模的 cc 攻击,导致数据库或服务器内存无法承受而断开连接。而且这种情况通常发生在晚上。

这些攻击者也非常狡猾,他们知道白天你会密切关注网站,所以他们通常在晚上才发起攻击。因为晚上我们需要休息,没有时间专注于监控网站。因此,我编写了一个定时监控脚本,可以定时检查 MySQL 和Nginx是否停止运行。如果停止运行,脚本会执行重启任务,并将日志记录到/www 目录中。
解决宝塔MySQL数据库频繁自动停止或掉线的方法
监控日志存放的目录:
解决宝塔MySQL数据库频繁自动停止或掉线的方法
监控的日志:
解决宝塔MySQL数据库频繁自动停止或掉线的方法

解决方案

1、MySQL 监控

宝塔面板—>计划任务,输入任务名称、执行周期、脚本内容

脚本内容如下:

  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 

最后效果如下:
解决宝塔MySQL数据库频繁自动停止或掉线的方法

2、Nginx 监控

宝塔面板—>计划任务,输入任务名称、执行周期、脚本内容

脚本内容如下:

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   

3、PHP 监控

宝塔面板—>计划任务,输入任务名称、执行周期、脚本内容

脚本内容如下:

注意:下面第 3 行代码中的 52~73 是指 php 版本 5.2 7.3

 pgrep -x php-fpm &> /dev/null
if [ $? -ne 0 ];then
/etc/init.d/php-fpm-{52|53|54|55|56|70|71|73} 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  

结语:

一般情况下,我们只需要添加 MySQL 和 Nginx 的监控,不需要添加其他的监控。我已经添加了这两个监控项,并且在添加后请务必测试任务的有效性。你可以在宝塔面板中停止 MySQL 和 Nginx 服务,然后执行该任务,观察 MySQL 和 Nginx 的状态是否成功开启。

本文章已结束,如转载请注明:汇站网 » 解决宝塔 MySQL 数据库频繁自动停止或掉线的方法

收藏 (0)

微信支付 微信扫一扫

支付宝支付 支付宝扫一扫

打赏二维码
点赞 (0)

站长资源下载中心-找源码上汇站

常见问题
  • 如果付款后没有弹出下载页面,多刷新几下,有问题联系客服!
查看详情
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情

相关文章

联系官方客服

为您解决烦忧 - 24小时在线 专业服务