TIDB7.5查询偶发的超时,PD:client:ErrClientGetTSO]get TSO failed

【 TiDB 使用环境】生产环境
【 TiDB 版本】TIDB7.5
【遇到的问题:问题现象及影响】
问题:业务反聩TIDB查询最近总有偶发的超时,时间1-几分钟。如16:20-16:40有超时
1)查TIDB监控,TIDB TP99变化不大
2)PD pd_stderr.log 日志有出错
[WARN] [retry_interceptor.go:62] [“retrying of unary invoker failed”] [target=etcd-endpoints://0xc002b405a0/10.27.xx.112:2379] [attempt=0] [error=“rpc error: code = DeadlineExceeded desc = context deadline exceeded”]
3)TIDB日志tidb.log上有错误(但是此类错误一直都有)
3.1) ‘PD:client:ErrClientGetTSO]get TSO failed, rpc error: code = Unknown’
3.2) table reader fetch next chunk failed

【资源配置】
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】
问题时间: 时间16:30左右(但可能有误差+5分钟,取16:25-16:40分析)

1) TP99平稳


2) * PD TSO Wait Duration

3)其它

4)机器情况
load有时会有大的毛刺,但并不固定是某台机器。

client:ErrClientGetTSO] get TSO failed 错误表明TiDB客户端获取时间戳服务(TSO)时失败。这可能是由于PD节点之间的网络延迟

监控看下 blackbox 页面,看看 pd 机器的 ping 延迟情况如何?

看下来大概率是 load 过高导致的,先查一查 load 高的原因吧。另外这个日志个数 是 tidb 的日志?

我觉得你应该检查下是到pd的网络问题还是pd负载问题

1 个赞

时延情况:


这网络太差了。难怪你的tso wait经常到2s。
拿个tso都2s,这一段的所有sql都将会是慢查询。
这个太影响运行稳定性了。找你们网络侧的小伙伴好好调一下。

1 个赞

延迟和丢包问题要处理下呀

1 个赞

这个网络是有问题,延迟太高。另外cpu load也不稳定,需要top检查下哪个进程异常导致的

看看network status

网络大概率有问题,直接登录系统查下netstat -i 看看是不是有报错丢包,每个服务器都看看

阈值与健康范围

  1. 正常场景
  • 理想值:TSO Wait Duration 应稳定在 ≤ 1ms(同一机房内 PD 与 TiDB 直连)。
  • 可接受范围:若跨低延迟网络(如同城专线),建议控制在 ≤ 5ms。超过此值需排查。
  1. 风险阈值
  • 警告线:持续超过 10ms 可能导致事务冲突率升高、AP 查询排队堆积。
  • 临界线:偶发尖峰超过 50ms 可能直接触发客户端超时(需紧急处理)。

网络问题有解决吗

重点还是解决网络问题,延迟太高了。
另外:
一、TSO请求处理瓶颈的处理方向:
高并发场景下 PD 的 TSO 批处理吞吐不足,可调整 PD 参数tso-update-physical-interval(默认 50ms)至更低值(如 30ms),提升 TSO 分配频率。
检查pd-server的tso-save-interval配置,确保 TSO 持久化间隔合理(默认 3s),避免频繁刷盘导致性能波动。

二、v7.5 +可临时启用TiDB的TSO 容错模式(需要测试):
SET GLOBAL tidb_enable_async_commit=ON; – 异步提交降低TSO依赖
SET GLOBAL tidb_enable_1pc=ON; – 一阶段提交减少TSO请求次数