正文:
早上我在检查网站时发现一个网站的流量明显减少了。打开网站后,显示数据库连接错误,我立刻意识到了问题的原因,很明显是 MySQL
数据库自动停止了。一般来说,遇到这种情况,说明网站可能遭受了小规模的 cc
攻击,导致数据库或服务器内存无法承受而断开连接。而且这种情况通常发生在晚上。
这些攻击者也非常狡猾,他们知道白天你会密切关注网站,所以他们通常在晚上才发起攻击。因为晚上我们需要休息,没有时间专注于监控网站。因此,我编写了一个定时监控脚本,可以定时检查 MySQL
和Nginx
是否停止运行。如果停止运行,脚本会执行重启任务,并将日志记录到/www
目录中。
监控日志存放的目录:
监控的日志:
解决方案
1、MySQL
监控
宝塔面板—>计划任务,输入任务名称、执行周期、脚本内容
脚本内容如下:
pgrep
-x
mysql
sql
d
start
echo
"监控到 MySQL
已停止,已执行重启计划,时间: `date
"+%Y
-%m
-%d
%H
:%M
:%S
"` " >> /www
/mysql_jiankong
.log
fi
2、Nginx
监控
宝塔面板—>计划任务,输入任务名称、执行周期、脚本内容
脚本内容如下:
3、PHP
监控
宝塔面板—>计划任务,输入任务名称、执行周期、脚本内容
脚本内容如下:
注意:下面第 3 行代码中的 52~73 是指 php
版本 5.2 7.3
4、redis
监控
脚本内容如下:
5、memcached
监控
脚本内容如下:
结语:
一般情况下,我们只需要添加 MySQL
和 Nginx
的监控,不需要添加其他的监控。我已经添加了这两个监控项,并且在添加后请务必测试任务的有效性。你可以在宝塔面板中停止 MySQL
和 Nginx
服务,然后执行该任务,观察 MySQL
和 Nginx
的状态是否成功开启。
转载请注明:汇站网 » 解决宝塔 MySQL
数据库频繁自动停止或掉线的方法