读写时间变差

tikv运行一段时间后,读写时间突然变差,同机大概需要150ms左右,执行tikv restart后,响应时间变好,恢复到10ms左右,大神们帮忙提供一下排查思路,变差时间点开始打印一下日志。。

日志:
[2023/11/29 03:48:07.487 +08:00] [INFO] [apply.rs:1612] [“execute admin command”] [command=“cmd_type: ChangePeerV2 change_peer_v2 { changes { change_type: AddLearnerNode peer { id: 1110 store_id: 4 role: Learner } } }”] [index=505260] [term=7] [peer_id=1105] [region_id=1102]
[2023/11/29 03:48:07.487 +08:00] [INFO] [apply.rs:2204] [“exec ConfChangeV2”] [epoch=“conf_ver: 71 version: 3”] [kind=Simple] [peer_id=1105] [region_id=1102]
[2023/11/29 03:48:07.487 +08:00] [INFO] [apply.rs:2385] [“conf change successfully”] [“current region”=“id: 1102 start_key: 780000006D2F6563FF612D746573742F6DFF6F6E69746F725F67FF6C6F62616C2F3132FF302E3233322E3937FF2E3132315F737461FF7475730000000000FA end_key: 78000000732F6563FF612D746573742F6DFF6F6E69746F725F67FF6C6F62616C2F3132FF302E3233322E3937FF2E3132315F737461FF7475730000000000FA region_epoch { conf_ver: 72 version: 3 } peers { id: 1103 store_id: 5 } peers { id: 1104 store_id: 9 } peers { id: 1105 store_id: 6 } peers { id: 1110 store_id: 4 role: Learner }”] [“original region”=“id: 1102 start_key: 780000006D2F6563FF612D746573742F6DFF6F6E69746F725F67FF6C6F62616C2F3132FF302E3233322E3937FF2E3132315F737461FF7475730000000000FA end_key: 78000000732F6563FF612D746573742F6DFF6F6E69746F725F67FF6C6F62616C2F3132FF302E3233322E3937FF2E3132315F737461FF7475730000000000FA region_epoch { conf_ver: 71 version: 3 } peers { id: 1103 store_id: 5 } peers { id: 1104 store_id: 9 } peers { id: 1105 store_id: 6 }”] [changes=“[change_type: AddLearnerNode peer { id: 1110 store_id: 4 role: Learner }]”] [peer_id=1105] [region_id=1102]
[2023/11/29 03:48:07.488 +08:00] [INFO] [raft.rs:2646] [“switched to configuration”] [config=“Configuration { voters: Configuration { incoming: Configuration { voters: {1104, 1105, 1103} }, outgoing: Configuration { voters: {} } }, learners: {1110}, learners_next: {}, auto_leave: false }”] [raft_id=1105] [region_id=1102]
[2023/11/29 03:48:09.299 +08:00] [INFO] [apply.rs:1612] [“execute admin command”] [command=“cmd_type: ChangePeerV2 change_peer_v2 { changes { peer { id: 1110 store_id: 4 } } changes { change_type: AddLearnerNode peer { id: 1103 store_id: 5 role: Learner } } }”] [index=505267] [term=7] [peer_id=1105] [region_id=1102]

大概运行2天左右,会突然变差

当TiKV的读写响应时间突然变差时,可以按照以下排查思路进行排查:

  1. 检查TiKV日志:查看TiKV的日志,特别是在读写响应时间变差的时间点附近的日志。日志中可能会有一些错误或异常信息,可以帮助确定问题的根本原因。您可以使用命令tail -n 1000 <tikv_log_file>来查看最近的日志。

  2. 检查硬件资源:检查TiKV所在的服务器的硬件资源使用情况,包括CPU、内存、磁盘和网络等。确保资源使用率没有达到瓶颈,例如CPU使用率过高、内存不足等。您可以使用系统监控工具(如top、htop等)来查看资源使用情况。

  3. 检查TiKV配置:检查TiKV的配置文件,确保配置参数的设置合理。特别关注与性能相关的参数,例如raftstore.store-pool-sizeraftstore.apply-pool-sizerocksdb.max-background-jobs等。您可以参考TiKV的官方文档[1]了解这些参数的含义和推荐值。

  4. 检查TiKV的存储引擎:如果您使用的是TiKV的默认存储引擎RocksDB,可以检查RocksDB的配置参数是否合理。特别关注与性能相关的参数,例如rocksdb.write-buffer-sizerocksdb.max-write-buffer-numberrocksdb.max-background-compactions等。您可以参考RocksDB的官方文档[2]了解这些参数的含义和推荐值。

  5. 检查TiKV的集群状态:使用TiUP或PD-CTL工具检查TiKV集群的状态,确保集群中的所有节点都正常运行,并且没有异常的Region分布或Leader分布。您可以使用命令tiup ctl:v5.1.1 pd -u <pd_address> storetiup ctl:v5.1.1 pd -u <pd_address> region来查看TiKV集群的状态信息。

  6. 检查网络连接:检查TiKV节点之间的网络连接是否正常。可以使用ping命令或其他网络诊断工具来测试节点之间的连通性和延迟。确保网络连接稳定,并且没有丢包或延迟过高的情况。

2 个赞

你看看慢sql吧

先给个不懂技术的技术小白点个赞

150ms左右响应时间应该还好吧,不算慢

本机调用读写,数据量很少,不应该那么慢吧

看起来没有,没有慢sql,都慢

请问这个日志是在做什么,谁能帮忙说明下,感谢!!

上面的日志是正常的region调度日志,INFO级别的。应该不是你说的问题的原因。

可以参考下面的思路分析,先定位到问题。

重启下就好,会不会是内存碎片?

[2023/11/29 03:48:12.473 +08:00] [WARN] [subscription_track.rs:159] [“backup stream observer refreshing void subscription.”] [new_region=“id: 1017 start_key: 72000000732F6563FF612D746573742F6DFF6972726F725F7465FF73742F3230323331FF3132323130303030FF3030303030303030FF3030303030303030FF3030304758485900FE end_key: 72000000732F6563FF612D746573742F6DFF6972726F725F7465FF73742F3230323331FF3132323130303030FF3030303030303030FF3030303030303030FF3030305037505200FE region_epoch { conf_ver: 78 version: 7 } peers { id: 1089 store_id: 5 } peers { id: 1090 store_id: 9 } peers { id: 1095 store_id: 6 } peers { id: 1111 store_id: 7 role: Learner }”]

这个日志会是问题吗?

选定问题时段,通过dashboard 和grafana 监控图来定位问题更方便,按照上面贴的分析文章排查一下。

通过日志来排查不是那么直观和方便

属于正常的响应级别,10ms属于高性能了

适当提高一下tikv内存配置试试

优化下慢sql看看

有没有可能是操作系统资源问题? 内存使用率是不是在2天后就增加了?

【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面

看一下你的机器配置,我猜机器配置不高~

感觉她好像是系统管理员,论坛每个问题都有很及时很完整的回答

你查下磁盘IO吧