暂无图片
运行tidb的时候,io值太高这个情况一般有哪些解决方法?
我来答
分享
暂无图片 匿名用户
运行tidb的时候,io值太高这个情况一般有哪些解决方法?

运行tidb的时候,io值太高这个情况一般有哪些解决方法?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
shunwahⓂ️

1、确认当前 I/O 指标
当出现系统响应变慢的时候,如果已经排查了 CPU 的瓶颈、数据事务冲突的瓶颈后,就需要从 I/O 来入手来辅助判断目前的系统瓶颈点。

2、从监控定位 I/O 问题
最快速的定位手段是从监控来查看整体的 I/O 情况,可以从集群部署工具 (TiDB-Ansible, TiUP) 默认会部署的监控组件 Grafana 来查看对应的 I/O 监控,跟 I/O 相关的 Dashboard 有 Overview,Node_exporter,Disk-Performance。

3、从 log 定位 I/O 问题
如果客户端报 server is busy 错误,特别是 raftstore is busy 的错误信息,会和 I/O 有相关性。

可以通过查看监控:grafana -> TiKV -> errors 监控确认具体 busy 原因。其中,server is busy 是 TiKV 自身的流控机制,TiKV 通过这种方式告知 tidb/ti-client 当前 TiKV 的压力过大,过一会儿再尝试。

4、从告警发现 I/O 问题
集群部署工具 (TiDB-Ansible, TiUP) 默认部署的告警组件,官方已经预置了相关的告警项目和阈值,I/O 相关项包括:

TiKV_write_stall
TiKV_raft_log_lag
TiKV_async_request_snapshot_duration_seconds
TiKV_async_request_write_duration_seconds
TiKV_raft_append_log_duration_secs
TiKV_raft_apply_log_duration_secs

5、I/O 问题处理方案
当确认为热点 I/O 问题的时候,需要参考 TiDB 热点问题处理来消除相关的热点 I/O 情况。
当确认整体 I/O 已经到达瓶颈的时候,且从业务侧能够判断 I/O 的能力会持续的跟不上,那么就可以利用分布式数据库的 scale 的能力,采用扩容 TiKV 节点数量的方案来获取更大的整体 I/O 吞吐量。
调整上述说明中的一些参数,使用计算/内存资源来换取磁盘的存储资源。

https://www.wenjiangs.com/doc/tidb-troubleshoot-high-disk-io

暂无图片 评论
暂无图片 有用 0
暂无图片
愤怒的蜗牛
2022-11-13
2022-11-13
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏