直接查threads_connected和max_connections两个变量即可:前者反映当前已建立的tcp连接数(含空闲),后者为实例最大连接限制;二者均可通过show或performance_schema查询,但需注意权限、连接池影响及后台线程占用配额。

直接查两个变量就行,不需要额外权限或复杂语句。
查当前活跃连接数用 SHOW STATUS LIKE 'Threads_connected'
这个值反映的是当前已建立、尚未断开的 TCP 连接数(包括空闲和正在执行的)。注意它不等于并发执行的查询数,只是“连上了”的客户端数量。
-
Threads_connected是实时值,每次查询都可能变化 - 如果应用用了连接池(比如 HikariCP),这个数通常远小于实际业务请求数
- 别和
Threads_running混淆——后者只统计正在执行 SQL 的线程,不含 sleep 状态
查最大连接限制用 SHOW VARIABLES LIKE 'max_connections'
这是 MySQL 实例允许同时存在的最大连接数,由配置决定。超过这个数的新连接会被拒绝,报错 Too many connections。
- 默认值通常是 151,但云数据库(如阿里云 RDS)可能设为 5000+,取决于规格
- 修改需写入配置文件或执行
SET GLOBAL max_connections = N(需要 SUPER 权限) - 动态修改后,新连接生效,但已有连接不受影响
一次性查全用 SELECT VARIABLE_VALUE FROM performance_schema.global_status WHERE VARIABLE_NAME = 'Threads_connected'; 和 SELECT VARIABLE_VALUE FROM performance_schema.global_variables WHERE VARIABLE_NAME = 'max_connections';
这种方式适合脚本调用或监控集成,避免 SHOW 语句的文本解析开销。前提是 performance_schema 已启用(MySQL 5.7+ 默认开启)。
-
performance_schema表返回的是纯数值,无需字符串匹配提取 - 如果禁用了
performance_schema,这条查询会返回空结果,不是报错 - 注意权限:普通用户可能没有访问
performance_schema的权限,而SHOW语句通常只要连接权限就能执行
真正容易被忽略的是:连接数统计不含 Unix socket 本地连接的特殊处理,也不含复制线程(Slave_IO_Running 和 Slave_SQL_Running 占用的线程不计入 Threads_connected),但它们会占用 max_connections 配额。所以压测时看到连接数卡在临界点附近,得确认有没有隐藏的后台线程在吃额度。











