查看当前MySQL已建立连接数

1. 查看当前 MySQL 已建立连接数(实时)

1.1 查看当前正在使用的连接数

1
SHOW STATUS LIKE 'Threads_connected';

解释:

  • Threads_connected 表示当前已建立、正在占用的连接数
  • 这是判断 MySQL 压力最常用、最靠谱的指标

1.2 查看当前正在执行 SQL 的连接数

1
SHOW STATUS LIKE 'Threads_running';

解释:

  • 只统计真正占用 CPU 的活跃线程
  • 如果这个值长期接近 CPU 核数,说明已经在“喘不过气”

2. 查看连接上限与使用情况(容量视角)

2.1 查看最大允许连接数

1
SHOW VARIABLES LIKE 'max_connections';

2.2 对比当前连接与最大连接

1
SHOW STATUS LIKE 'Max_used_connections';

解释:

  • Max_used_connections:历史峰值
  • 如果它接近 max_connections,说明曾经撞过连接天花板

3. 查看连接来源(定位谁在占连接)

3.1 按主机统计连接数

1
2
3
SELECT host, COUNT(*) 
FROM information_schema.processlist
GROUP BY host;

3.2 按用户统计连接数

1
2
3
SELECT user, COUNT(*) 
FROM information_schema.processlist
GROUP BY user;

3.3 查看完整连接详情(慎用,连接多时很吵)

1
SHOW FULL PROCESSLIST;

4. 生产环境判断经验

4.1 健康区间经验值

  • Threads_connected < max_connections * 70%:安全
  • Threads_running 通常 ≤ CPU 核数
  • Threads_running 持续升高 ≈ 慢 SQL 或锁竞争

4.2 如果连接数异常高,优先怀疑

  • 连接池未生效(Java / Go / PHP)
  • 应用未释放连接
  • 慢 SQL 导致连接堆积
  • 短连接洪水(典型 PHP / Node)

5. 一句话总结

  • 看压力Threads_running
  • 看规模Threads_connected
  • 看风险Max_used_connections / max_connections
  • 看元凶processlist