匿名用户运行tidb的时候,io值太高这个情况一般有哪些解决方法?
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
墨值悬赏


