WordPress网站使用MySQL 5.7时出现自动暂停的情况,可能由以下原因导致,可按以下方法排查和解决:

1. 资源不足

  • 内存不足:MySQL进程可能因服务器内存耗尽被系统终止。可通过free -h命令查看内存使用情况,若内存不足,可考虑增加服务器内存或优化MySQL配置,如调整innodb_buffer_pool_size等参数,减少内存占用。
  • CPU负载过高:大量并发查询或复杂查询可能导致CPU负载过高,使MySQL响应缓慢甚至暂停。使用tophtop命令查看CPU使用情况,优化慢查询语句,添加必要索引,减少不必要的查询。

2. 配置问题

  • 连接数限制:MySQL的max_connections参数设置过低,可能导致新连接无法建立,进而影响网站正常运行。可通过SHOW VARIABLES LIKE 'max_connections';查看当前设置,适当增加该值,如SET GLOBAL max_connections = 1000;
  • 超时设置wait_timeoutinteractive_timeout参数设置过短,可能导致连接在空闲时被意外关闭。可将这两个参数设置为较大值,如SET GLOBAL wait_timeout = 3600; SET GLOBAL interactive_timeout = 3600;

3. 磁盘问题

  • 磁盘空间不足:MySQL的数据文件和日志文件可能占用大量磁盘空间,若磁盘空间不足,可能导致MySQL无法正常写入数据,从而暂停。使用df -h命令检查磁盘空间,清理不必要的文件或扩展磁盘容量。
  • 磁盘I/O性能问题:磁盘读写速度过慢可能影响MySQL的性能,导致查询响应时间过长甚至暂停。可使用iostat -x 1命令查看磁盘I/O统计信息,若发现磁盘I/O瓶颈,可考虑优化磁盘配置或更换高性能磁盘。

4. 软件故障

  • MySQL进程异常:MySQL进程可能因内部错误或异常而停止运行。可通过systemctl status mysqldservice mysqld status命令查看MySQL服务状态,若服务已停止,可尝试重启MySQL服务,如systemctl restart mysqldservice mysqld restart
  • 插件或主题冲突:某些WordPress插件或主题可能与MySQL 5.7存在兼容性问题,导致数据库连接异常或暂停。可尝试禁用所有插件,然后逐个启用,排查是否是某个插件导致的问题;同样,切换到默认主题,检查是否是主题问题。

5. 网络问题

  • 网络连接不稳定:服务器与数据库之间的网络连接中断或不稳定,可能导致数据库连接失败或暂停。检查服务器的网络配置,确保网络连接正常,可尝试重启网络服务或检查网络设备(如路由器、交换机)是否正常工作。

若以上方法无法解决问题,建议查看MySQL的错误日志(通常位于/var/log/mysql/error.log),根据日志中的具体错误信息进一步排查和解决。

宝塔MySQL数据库自动停止或者掉线后,检测并自动重启

有时候打开网站显示数据库连接错误,我就知道这是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

 

效果如下:

640-174

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目录:

640-14

640-4
一般我们只需要添加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