跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

宝塔面板如何查看MySQL实时连接_监控数据库压力与清理锁

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

相关文章