phpMyAdmin 不显示“Active Connections”聚合指标,因 MySQL 无此内置变量;Threads_connected 是总连接数(含 Sleep),Threads_running 才是真实活跃线程数,需通过 SHOW FULL PROCESSLIST 结合 User、Command、State 等字段人工识别 WordPress 活跃连接及潜在泄漏。
phpmyadmin 本身不显示“active connections”这个聚合指标,它只提供当前连接快照(show processlist),而 wordpress 的活跃连接数必须从 mysql 实际运行状态中人工识别和过滤。
为什么不能直接看“Active Connections”数字?
MySQL 没有内置名为 Active Connections 的状态变量;Threads_connected 是总连接数(含 Sleep),Threads_running 才是真正执行中的线程数——这才是你关心的“活跃”部分。phpMyAdmin 的“状态”页默认只展示 Threads_connected,容易误判。
- 如果你在 phpMyAdmin “状态”页看到
Threads_connected = 42,不代表有 42 个请求正在处理,其中可能有 38 个是 PHP-FPM 保持的空闲连接(Sleep) -
Threads_running才反映真实并发压力,但它不会自动高亮或分类;必须进 SQL 窗口手动查 - WordPress 插件或主题常复用数据库连接,但未及时
mysql_close(),导致Sleep连接堆积,最终耗尽max_connections
怎么用 SHOW PROCESSLIST 快速识别 WordPress 真实活跃连接?
打开 phpMyAdmin → 顶部“SQL”标签 → 粘贴执行:
SHOW FULL PROCESSLIST;
重点关注三列:User、Command、Time 和 State:
-
User为wp_user或你给 WordPress 配置的数据库用户名,可快速定位来源 -
Command = Query且State是Sending data、Sorting result、Locked或空白(正在执行)才算活跃 -
Command = Sleep且Time > 60的连接大概率是泄漏的——WordPress 默认mysql.connect_timeout=60,超时应断开 - 如果看到大量相同
Host(如192.168.1.100:54321)+ 相同DB+ 不同ID,说明某次页面请求触发了多个未关闭连接
如何关联到具体 WordPress 请求或插件?
仅靠 PROCESSLIST 无法直接看出是哪个 URL 或插件发起的,但可通过以下方式缩小范围:
立即学习“PHP免费学习笔记(深入)”;
- 在
Info列里找是否含wp_前缀表名(如SELECT * FROM wp_options),基本可判定是 WordPress 核心读取 - 若
Info含wp_acf_、wp_wpml_等,大概率是对应插件在执行查询 - 配合 WordPress 开启
WP_DEBUG_LOG和SAVEQUERIES,再刷新前端页面,立刻回 phpMyAdmin 查PROCESSLIST,此时活跃连接的Info内容与日志中刚执行的 SQL 高度吻合 - 禁用所有插件 → 重试 → 若活跃连接数骤降,说明问题插件就在其中;逐个启用排查
容易被忽略的关键点
很多人盯着 Threads_connected 数字猛增就 panic,其实更危险的是低数值下的长时间阻塞:
-
Threads_running = 2但其中一条卡在State = "Waiting for table metadata lock",会导致后续所有请求排队——这比 50 个Sleep更致命 - WordPress 后台“更新插件”或“保存设置”时触发的
ALTER TABLE,会锁全表,让前台页面全部挂起,但PROCESSLIST里只显示一条Query,极易被忽略 - phpMyAdmin 自身也会创建连接(尤其在“状态”页自动轮询时),它的连接
User通常是pma_user,别把它误算进 WordPress 活跃连接



















