在phpMyAdmin中查看进程列表需点击顶部「监视器」标签页(若启用),或更可靠地在「SQL」标签页执行SHOW FULL PROCESSLIST命令,普通用户仅见自身连接,需PROCESS权限才可查看全部;重点关注Id、User、Host、Command、Time及State字段以识别异常连接。
在 phpMyAdmin 中找到「进程列表」入口
phpmyadmin 默认首页左上角有「状态」标签页,点进去后往下滑,在「连接」区域就能看到「当前连接数」和「最大连接数」两个数值。但这个只是统计快照,不是实时进程列表。要查具体每个活跃连接的详情,必须点顶部菜单栏的「监视器」——注意不是所有 phpmyadmin 版本都默认启用该功能,如果看不到「监视器」,说明管理员禁用了 $cfg['servers'][$i]['pmadb'] 相关配置,或者没导入监控所需的系统表。
用 SQL 直接执行 SHOW PROCESSLIST
这是最可靠、兼容性最好的方式,不受界面开关限制:
- 在 phpMyAdmin 的任意数据库页面,切换到「SQL」标签页
- 输入并执行:
SHOW PROCESSLIST;
- 想看更全的信息(比如被阻塞的锁、完整 SQL),改用:
SHOW FULL PROCESSLIST;
- 普通用户只能看到自己的连接;需要查看全部连接,账号必须拥有
PROCESS权限
识别哪些连接属于「异常活跃」
结果里重点关注几列:
-
Id:连接唯一 ID,可用于后续KILL [Id] -
User:发起连接的 MySQL 用户名,比如app_user或root -
Host:来源 IP 和端口,如192.168.1.10:54321,能帮你定位是哪个服务实例连上来的 -
Command:当前命令类型,Sleep表示空闲等待,Query表示正在执行 SQL,Locked或Waiting for table metadata lock是典型卡顿信号 -
Time:单位秒,值大于 60 且Command是Sleep,大概率是未正确关闭的长连接
为什么 SHOW STATUS LIKE 'Threads_connected' 不够用
这条语句只返回一个数字,比如 Threads_connected: 42,但它不区分连接状态:
- 无法看出这 42 个里有多少是
Sleep、多少在跑慢查询 - 无法判断是否集中来自某一个应用 IP 或用户
- 不能关联到具体 SQL,也就没法分析瓶颈是索引缺失还是事务没提交
- 它和
SHOW PROCESSLIST的结果可能短暂不一致,因为前者是状态变量缓存值,后者是实时扫描内存中的线程结构体
真正排查连接堆积时,得先看 SHOW FULL PROCESSLIST,再结合 information_schema.PROCESSLIST 做条件过滤——比如查所有超过 30 秒的非 Sleep 连接:
SELECT * FROM information_schema.PROCESSLIST WHERE TIME > 30 AND COMMAND != 'Sleep';这种细粒度控制,光靠首页状态面板根本做不到。
立即学习“PHP免费学习笔记(深入)”;



















