一直以来,我没找到 TiDB 监控中如何查看当前活跃会话数的方法。有些文章认为通过查看 QPS 就能确认当前的活跃连接数,但这个方法本质上是有问题的,因为不同的 SQL 语句有不同的延迟。因此,通过活跃的 QPS 不能真正反映当前活跃会话的连接数。直到我最近翻看TiDB-Server的代码(基于6.1.5版本),我突然发现活跃连接数是有办法呈现的,只是没有对应的 grafana 图表展示出来。
在conn.go
代码下,有一段获取token
的代码。
token := cc.server.getToken()
复制
这段代码调用了以下方法
func (s *Server) getToken() *Token {
start := time.Now()
tok := s.concurrentLimiter.Get()
metrics.TokenGauge.Inc()
// Note that data smaller than one microsecond is ignored, because that case can be viewed as non-block.
metrics.GetTokenDurationHistogram.Observe(float64(time.Since(start).Nanoseconds() / 1e3))
return tok
}复制
可以看到当你获取到一个 token
的时候,会调用监控的方法 metrics.TokenGauge.Inc()
。而 Gauge
是 prometheus
中的可增可减的仪表盘。继续看这段监控的说明:
TokenGauge = prometheus.NewGauge(
prometheus.GaugeOpts{
Namespace: "tidb",
Subsystem: "server",
Name: "tokens",
Help: "The number of concurrent executing session",
},
)复制
这不就正是我们需要的活跃会话数吗 ?
下面我们做个简单的实验验证一下它到底行不行 ?写一个脚本,然后循环发起30个。
vi a1.sh
mysql -uroot -h127.0.0.1 -P4000 -D test --password="" -e "select sleep(30);"
while ((i < 30)); do nohup sh a1.sh & $((i += 1)); done复制
然后我们在 grafana 中新建一个图表,输入tidb_server_tokens{k8s_cluster="$k8s_cluster", tidb_cluster="$tidb_cluster", instance=~"$instance"}。

可以发现和我们要的效果是一致的。
获取 token 代码中还有一个是记录 token 获取时间直方图。在 grafana 的 {cluster-name} → tidb → Server → Get Token Duration
下面。

如果我们使用 QPS 来看的话,会发现根本无法衡量活动会话数。

所以,如果要看活跃会话数,就把 tidb_server_tokens 这个指标用 grafana 图表做出来。
文章转载自TiDB之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
轻松上手:使用 Docker Compose 部署 TiDB 的简易指南
shunwahⓂ️
96次阅读
2025-04-27 16:19:49
可观测性方案怎么选?SelectDB vs Elasticsearch vs ClickHouse
SelectDB
67次阅读
2025-05-09 16:48:09
APTSell x TiDB AutoFlow:AI 数字员工,助力销售业绩持续增长
PingCAP
61次阅读
2025-04-21 10:35:16
TiDB 社区第四届专栏征文大赛联合墨天轮火热开启,TiDB 业务场景实战、运维开发攻略两大赛道,重磅礼品等你来拿!
SQL数据库运维
58次阅读
2025-04-21 10:12:19
从单一到多活,麦当劳中国的数据库架构迁移实战
PingCAP
46次阅读
2025-04-18 10:01:03
TiDB 亮相 CHIMA 2025,助力医疗一栈式数据底座打造
PingCAP
42次阅读
2025-05-13 09:39:22
使用 Streamable HTTP 前后的数据比对
Se7en的架构笔记
41次阅读
2025-04-28 10:22:27
从开源到全球认可:TiDB 在 DB-Engine 排名中的十年跃迁
韩锋频道
41次阅读
2025-04-24 09:53:42
卷疯了!众数据库厂商的征文汇
严少安
41次阅读
2025-04-23 02:19:36
如何巧妙解决 Too many connections 报错?
爱可生开源社区
40次阅读
2025-05-07 10:05:55