搜索

pdf文档 Tracing in TiDB 浅谈全链路监控: 从应用到数据库到 Runtime

3.43 MB 39 页 0 下载 152 浏览 0 评论 0 收藏
所属分类: 数据库 / TiDB
语言 格式 评分
中文(简体)
.pdf
3
摘要
文档介绍了TiDB中从应用到数据库到Runtime的全链路监控实现方案。核心思想是将Tracer ID和Span Context传递到TiDB内核中。具体做法包括添加Session Variable(如SET @@tidb tracer id=xxxxxx),在应用中将Tracer信息序列化后传递给该变量,在TiDB体系内反序列化生成新Context。TiDB和TiKV之间通过gRPC通信,Jaeger对gRPC有良好支持。文档还通过一个真实故事说明了全链路监控的必要性,并介绍了go tool trace工具及其优缺点。性能测试显示,在sysbench oltp_point_select负载下,profile+labels方案对QPS的损耗约3.1%。
AI总结
该文档介绍了TiDB全链路监控的实现方案,核心是将应用层的分布式追踪信息(如Jaeger的Trace ID和Span Context)传递到数据库内核,以实现从应用到数据库再到Runtime的端到端监控。 **核心思想**:将Tracer ID和Span Context传递到TiDB内核中。 **具体做法**: 1. TiDB新增一个Session Variable(`SET @@tidb tracer id=xxxxxx`),用于接收追踪信息。 2. 在应用程序中,将Trace ID和Span Context序列化为字符串,并通过该Session Variable传递给TiDB。 3. TiDB内部将接收到的字符串反序列化,生成新的Context,从而将追踪信息融入数据库内部处理流程。 4. TiDB与TiKV之间通过gRPC通信,而Jaeger对gRPC有良好支持,便于追踪信息在组件间传递。 **关键工具**:Jaeger client提供了序列化和反序列化的实现方法(`String()`和`ContextFromString()`),简化了集成过程。 **背景与动机**:文档通过一个真实故事说明了全链路监控的必要性:当应用变慢时,前端、后端和DBA可能互相推诿,而缺乏贯穿全链路的追踪信息使得问题定位困难。 **其他监控手段**: - 文档提到了`go tool trace`,该工具好用但性能损耗大,不适合长期开启。 - 介绍了基于性能分析(profile)和标签(labels)的优化方案,并通过sysbench测试(`oltp_point_select`和`oltp_read_write`)验证了其性能损耗极低(QPS损耗约0.4%-3.1%,延迟损耗约0.8%-3%)。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 32 页请下载阅读 -
文档评分
请文明评论,理性发言.