You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ProxySQL v2.4.2 Client_Connections_non_idle统计值与预期不符问题咨询

ProxySQL v2.4.2 连接统计值异常问题解答

问题场景

查询ProxySQL客户端连接统计数据时,执行如下SQL:

select * from stats.stats_mysql_global where variable_name like 'Client_connection%';

返回结果如下:

+-------------------------------------+----------------+
| Variable_Name                       | Variable_Value |
+-------------------------------------+----------------+
| Client_Connections_aborted          | 0              |
| Client_Connections_connected        | 495            |
| Client_Connections_created          | 43785          |
| Client_Connections_non_idle         | 495            |
| Client_Connections_hostgroup_locked | 0              |
+-------------------------------------+----------------+

可以看到Client_Connections_non_idle取值始终与Client_Connections_connected一致,但执行show processlist;查看连接列表时,所有连接的Command字段状态均为Sleep,按常规认知Client_Connections_non_idle值应为0,与实际统计结果不符,当前使用ProxySQL版本为v2.4.2。

问题原因

你的认知存在偏差,核心是对Client_Connections_non_idle指标的定义理解错误:

  • Client_Connections_non_idle不统计正在执行SQL的活跃连接数,它的实际统计逻辑是:未进入空闲等待回收队列、持有完整前端客户端会话上下文的连接总数。
  • ProxySQL v2.4.x版本的连接生命周期逻辑中,即使连接处于Sleep状态等待客户端下发新请求,只要连接没有被主动断开、没有被放入空闲连接复用池等待销毁或复用,就会计入Client_Connections_non_idle。
  • show processlist中显示的Command=Sleep仅代表当前连接没有正在执行的SQL语句,和该指标的统计维度完全无关:Sleep状态的连接只要还绑定着对应客户端会话、没有被回收,就会同时被计入Client_Connections_connected和Client_Connections_non_idle,这就是两个值完全相等的原因。
  • 只有当连接被主动关闭、或者进入内部空闲连接回收队列等待销毁时,才会从Client_Connections_non_idle计数中扣减。如果实例配置的前端连接空闲超时时间(mysql_wait_timeout参数)较大,就会长期出现两个计数值完全相等的情况。

内容的提问来源于stack exchange,提问作者Primadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 00:18:25