MySQL连接数爆满时,show processlist默认只显示当前用户连接,root需执行show full processlist才可见全部;宝塔等面板因权限限制或代理中间层可能隐藏真实连接,应优先通过终端直连并结合information_schema.PROCESSLIST、performance_schema等深入排查。
MySQL 连接数爆满时,
看不到活跃连接?
不是没连接,是默认只显示当前用户能看到的连接。root 用户执行
才能看全貌;普通用户即使有权限,也可能被宝塔后台的 MySQL 账号限制(比如只给了
权限)。另外,宝塔 8.x+ 默认启用了连接池代理(通过
或自研中间层),真实连接可能被复用或隐藏——此时得去服务器终端直接连 MySQL,别依赖面板里的“数据库管理”页。
比
多显示完整 SQL,对定位长事务关键
连接状态为
不代表无害,可能是应用没正确 close,积压大量空闲连接
宝塔面板首页的“数据库连接数”数字,是取自
,但刷新延迟约 10–30 秒,不能当实时指标用
用
查锁和阻塞,比
更可靠
当出现慢查询或死锁,
只能看“当前在干啥”,但查不出谁在等谁。
是底层表,配合
(MySQL 5.7+)或
(8.0+)才能定位锁源。宝塔不提供这些视图的图形化入口,必须手动执行 SQL。
查正在锁表的连接:
查锁等待链(MySQL 8.0):
注意:启用
需在
中确保
,重启 MySQL 生效
宝塔里点“清理连接”只是 kill 掉指定 ID,不是释放连接池
面板上那个“终止连接”按钮,本质是执行
,只杀单个线程。如果应用用了连接池(如 PHP 的 PDO::ATTR_PERSISTENT、Java 的 HikariCP),kill 后连接会立刻重建,压力反而反弹。真要减压,得关源头。
PHP 应用常见问题:未设置
和
,导致连接卡死后堆积
检查宝塔 PHP 设置页 → “配置修改” → 搜索
,设为
(避免自动重连掩盖问题)
MySQL 层可临时限流:
,但需确认宝塔监控是否同步更新该值(有时面板仍显示旧配置)
实时监控别只盯面板数字,用
+
看真实波动
宝塔的“数据库监控”图表采样间隔长、聚合逻辑黑盒,突发尖峰容易漏掉。终端命令才是实锤。
每 2 秒刷新一次连接与 QPS:
查最近 1 分钟最耗时的 5 条 SQL:
(需先开启慢日志)
宝塔开启慢日志路径在:网站 → 数据库 → 选中库 → “配置修改”,找到
和
,保存后记得重启 MySQL
连接数暴涨往往不是 SQL 慢,而是应用层没做连接复用或超时控制。查完
和锁之后,下一步一定是翻应用日志,而不是调 MySQL 参数。
show processlistshow full processlistSELECTmysql-proxyshow full processlistshow processlistSleepSHOW STATUS LIKE 'Threads_connected'information_schema.PROCESSLISTshow processlistshow processlistinformation_schema.PROCESSLISTsys.innodb_lock_waitsperformance_schema.data_locksSELECT * FROM information_schema.PROCESSLIST WHERE COMMAND != 'Sleep' AND TIME > 60;SELECT * FROM performance_schema.data_lock_waits;performance_schema/www/server/mysql/my.cnfperformance_schema = ONKILL [id]mysql.connect_timeoutmysql.default_socketmysqli.reconnectOffSET GLOBAL max_connections = 200;mysqladminwatchwatch -n 2 "mysqladmin -u root -p'你的密码' extended-status | grep -E 'Threads_connected|Questions'mysqldumpslow -s t -t 5 /www/server/mysql/mysql.logslow_query_log = 1long_query_time = 1processlist