DigitalOcean WordPress MySQL数据库连接时断时续故障排查
WordPress执行MySQL选库命令后随机断连修复方案
该问题完全可修复,不存在不可逆损坏。单纯执行use 数据库名命令仅切换当前命令行会话的操作上下文,不会修改任何库表结构或数据。
故障根因
DigitalOcean默认的WordPress一键镜像给MySQL配的最大连接数本来就不高,你用root登进MySQL之后如果不主动退出,会一直占用一个持久连接,叠加WooCommerce运行本身的连接消耗,很容易把可用连接数占满。后续站点的访问请求拿不到连接就会排队等待,表现出来就是随机断连、单次超时20秒以上、间歇又能正常访问。
修复步骤
- 第一步:调整MySQL最大连接数
登录MySQL后依次执行以下命令,查看当前连接占用和最大连接数配置:
如果返回的已连接线程数接近最大连接数数值,直接执行命令临时调大连接数:show status like 'Threads_connected'; show variables like 'max_connections';
临时调整后编辑MySQL配置文件(默认路径set global max_connections = 200;/etc/mysql/mysql.conf.d/mysqld.cnf),在[mysqld]配置段下追加max_connections = 200,保存后执行systemctl restart mysql让配置永久生效,避免服务重启后配置还原。 - 第二步:清理异常长事务/持锁会话
登录MySQL后执行以下命令,查看是否存在长时间未提交的持锁事务:
如果返回结果中存在执行时长超过10秒的事务,记录对应select * from information_schema.innodb_trx\Gtrx_mysql_thread_id字段的数值,执行kill 对应ID;杀掉异常会话即可。操作完成后直接输入exit退出你当前打开的MySQL命令行会话,释放占用的连接。 - 第三步:核对站点配置正确性
进入WordPress站点根目录(DigitalOcean默认镜像路径为/var/www/html/),打开wp-config.php文件,核对以下配置项和实际数据库信息一致:DB_NAME值应为wordpressDB_USER、DB_PASSWORD为站点专用的数据库账号密码,不要和你要修改的站点管理员账号密码混淆
- 第四步:重启Web服务验证
以上操作完成后,执行对应命令重启PHP和Web服务清空连接缓存:# Nginx环境执行 systemctl restart php8.1-fpm nginx # Apache环境执行 systemctl restart php8.1-fpm apache2
注意事项
- 后续通过命令行操作数据库时,操作完成及时退出MySQL会话,不要长期挂着命令行窗口占用连接。
- 修改WordPress站点管理员账号密码时,不要改动数据库本身的账号权限,只需要修改
wp_users表内对应用户的user_pass字段即可,密码要存入对应哈希密文,不要直接存明文。
内容的提问来源于stack exchange,提问作者sylargaf
相关产品推荐
相关产品推荐

