phpMyAdmin右下角的连接数仅反映其自身会话,与Laravel无关;查Laravel实际连接数需执行SHOW STATUS LIKE 'Threads_connected',但需PROCESS权限;监控应结合应用日志与定时采集。

phpMyAdmin里看到的连接数不等于Laravel实际用掉的连接数
phpMyAdmin右下角显示的“#12 connections”只是它自己当前建立的连接数,和 Laravel 应用完全无关。它既不反映 DB::connection() 调用次数,也不统计 Laravel 所有请求共用了多少条 MySQL 连接。这个数字只代表 phpMyAdmin 自身的会话,刷新页面就可能变,毫无监控价值。
真要查Laravel用掉的连接数,得绕到MySQL服务端执行SQL
因为 Laravel 的 PDO 实例不暴露连接池状态,DB::connection()->getPdo() 返回的只是一个已连上的句柄,没法告诉你“总共开了几条”。必须让数据库自己报数:
- MySQL:执行
SHOW STATUS LIKE 'Threads_connected';—— 这是当前所有已建立连接的总数(含 Laravel、phpMyAdmin、其他应用) - 如果用了读写分离,
DB::connection('read')和DB::connection('write')是两个独立连接器,但它们都算进这个总数里,无法单独拆分 - 注意权限:该语句需要
PROCESS权限,phpEnv 或某些精简版 MySQL 默认没开,直接执行会报Access denied
phpMyAdmin里能做的有限补救操作
虽然不能监控,但可以快速做三件事辅助判断是否出问题:
- 点顶部菜单「状态」→「线程」,看
Threads_connected和Max_used_connections是否长期接近max_connections - 点「SQL」页,运行
SHOW PROCESSLIST;,重点扫一眼有没有大量Sleep状态且Time超过 300 秒的连接——这基本是 Laravel 没正确释放或wait_timeout设得太长 - 别信「刷新」按钮:phpMyAdmin 刷新不会断开旧连接,反复点只会累积空闲连接,反而干扰判断
真正可靠的监控必须脱离phpMyAdmin
高并发下靠手动点 phpMyAdmin 查数,就像用体温计测服务器负载。容易被忽略的是:连接数飙升往往不是瞬时峰值,而是缓慢堆积的泄漏。你得在应用层加日志(比如每次 DB::connection() 前打点),再配合定时采集 Threads_connected 写入时间序列库,才能看出趋势。否则等看到“Too many connections”,通常已经连不上数据库了。
立即学习“PHP免费学习笔记(深入)”;



















