导读:本期聚焦于小伙伴创作的《mysql如何监控连接数占用情况,有哪些实时查看指令》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《mysql如何监控连接数占用情况,有哪些实时查看指令》有用,将其分享出去将是对创作者最好的鼓励。

mysql连接数监控是数据库运维中的基础工作,当连接数接近或超过最大限制时,新的客户端请求会被拒绝,影响业务正常访问。及时掌握连接数占用情况可以快速排查连接泄漏、高并发访问等问题。

mysql如何监控连接数占用情况,有哪些实时查看指令

查看mysql当前实时连接数

最直接的方式是使用SHOW STATUS指令查询连接相关的状态变量,以下是常用的查询语句:

-- 查看当前已经建立的连接数
SHOW STATUS LIKE 'Threads_connected';

-- 查看从mysql启动以来累计的连接数
SHOW STATUS LIKE 'Connections';

-- 查看当前正在运行的连接数(处于活跃状态的连接)
SHOW STATUS LIKE 'Threads_running';

其中Threads_connected就是当前实时的总连接数,这个值会随客户端的连接和断开动态变化。

查看每个连接的详细信息

如果需要查看每个连接的具体信息,比如连接的用户、来源IP、执行的SQL、连接时长等,可以使用SHOW PROCESSLIST指令:

-- 查看所有连接的详细信息,root用户可以看到所有连接,普通用户只能看到自己的连接
SHOW PROCESSLIST;

-- 查看完整的信息,避免SQL语句被截断
SHOW FULL PROCESSLIST;

返回的结果包含以下关键字段:

  • Id:连接的唯一标识,可用于后续杀死异常连接
  • User:建立连接的用户名
  • Host:客户端的IP和端口
  • db:当前连接使用的数据库
  • Command:连接当前执行的命令类型,比如Sleep表示空闲连接,Query表示正在执行查询
  • Time:连接处于当前状态的时间,单位是秒
  • State:连接的当前状态
  • Info:连接正在执行的SQL语句,Full选项下会显示完整语句

通过information_schema库查询连接信息

除了上述指令,还可以直接查询information_schema库的PROCESSLIST表,这种方式可以更灵活地筛选连接信息:

-- 查询所有连接的基本信息
SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO FROM information_schema.PROCESSLIST;

-- 查询空闲时间超过60秒的连接
SELECT ID, USER, HOST, TIME FROM information_schema.PROCESSLIST WHERE COMMAND = 'Sleep' AND TIME > 60;

-- 统计每个用户的连接数
SELECT USER, COUNT(*) AS conn_count FROM information_schema.PROCESSLIST GROUP BY USER;

查看mysql最大连接数配置

要判断当前连接数是否过高,还需要知道mysql配置的最大连接数,查询方式如下:

-- 查看当前配置的最大连接数
SHOW VARIABLES LIKE 'max_connections';

-- 查看当前连接数占最大连接数的比例,计算方式:当前连接数/最大连接数*100%
SELECT 
    (SELECT VARIABLE_VALUE FROM information_schema.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Threads_connected') AS current_conn,
    (SELECT VARIABLE_VALUE FROM information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'max_connections') AS max_conn,
    CONCAT(ROUND((SELECT VARIABLE_VALUE FROM information_schema.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Threads_connected') / (SELECT VARIABLE_VALUE FROM information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'max_connections') * 100, 2), '%') AS conn_rate;

如果当前连接数占最大连接数的比例超过80%,就需要考虑优化连接使用或者调大最大连接数配置了。

调整最大连接数的方法

如果业务需要更多的连接数,可以临时或者永久调整max_connections参数:

-- 临时调整,重启mysql后失效,设置最大连接数为500
SET GLOBAL max_connections = 500;

-- 永久调整需要修改mysql配置文件my.cnf,在[mysqld]段添加以下内容,然后重启mysql
-- max_connections = 500

处理异常连接的方法

如果发现有异常的连接,比如长时间空闲的连接、执行异常SQL的连接,可以使用KILL指令终止对应的连接:

-- 终止ID为123的连接,ID来自SHOW PROCESSLIST或者information_schema.PROCESSLIST的查询结果
KILL 123;

-- 如果连接正在执行查询,可以使用KILL QUERY终止正在执行的语句,保留连接
KILL QUERY 123;
注意:终止连接操作需要谨慎执行,避免误杀正在执行重要业务的连接,导致业务数据异常。

mysql连接数监控show_processlistinformation_schemamax_connections修改时间:2026-07-20 20:42:27

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。