首批通过分布式安全可靠测评,为关键业务系统打造
节点磁盘 IO 过高
更新时间:2025-03-11 15:44:19
导致 observer 所在节点 IO 压力过大的原因有很多,除了流量上涨外,通常是迁移复制、合并等因素叠加的结果。处理的思路通常是将一些高 IO 的负载任务降级,本文针对各种情况进行详细分析。
应急处理流程
针对节点磁盘 IO 过高的情况,处理的思路通常是将一些高 IO 的负载任务降级,具体分如下几种情况。
暂停进行中的合并。
磁盘 IO 过高的节点若是正在进行合并,可以将其暂停,以缓解 IO 压力。暂停合并,命令如下所示:
ALTER SYSTEM SUSPEND MERGE [ZONE [=] 'zone'];等 IO 压力缓解后,您可以根据需要恢复合并,语法如下所示:
ALTER SYSTEM RESUME MERGE [ZONE [=] 'zone'];暂停执行中的备份任务。
您可以通过 OCP 查看当前节点是否正在进行备份,如果是,可以暂停备份,以缓解 IO 压力。
暂停执行中的数据传输或导入/导出任务。
您可以直接通过在 OCP 中的 TOPSQL、会话管理功能排查正在批量写入的 SQL,如果不能快速判断跑批任务来自哪个系统,也可以直接通过 OMS 查看当前节点是否正在进行数据传输任务,如果是的话,可以根据需要将其暂停,缓解 IO 压力后再继续执行。
更多信息可以阅览 管理数据迁移项目。
您还可以通过 ODC 查看当前节点是否正在进行导数。在 ODC 工单 页签中单击 导入 查看任务列表;导入任务待执行时,可以根据需要 终止 任务。此外,其他第三方的大数据平台、DataX 组件也可能存在定时执行的任务,可以按需手动停掉。
调低转储线程数
转储时并行度过高会导致磁盘的 IO 随之增高,
compaction_high_thread_score是控制并行转储线程数,您可以通过调低该参数值来降低磁盘的 IO 使用率。该参数默认值为0,表示自适应,64C一般为10,可以根据情况调小。修改该参数无需重启直接生效。语法如下所示:ALTER SYSTEM SET compaction_high_thread_score= 5;修改成功后,可以通过
SHOW PARAMETERS语句查看是否修改成功。SHOW PARAMETERS LIKE 'compaction_high_thread_score';调低后台任务的网络带宽。
您可以使用如下命令来调低后台任务的网络带宽:
ALTER SYSTEM SET sys_bkgd_net_percentage=30; --默认值 60对高负载的 SQL 执行限流、添加索引。
当磁盘 IO 过高,定位到某条 SQL 时,可以通过绑定 SQL 的执行计划加入 hint max_concurrent 来限制 SQL 并发,实现对 SQL 的限流。
因为索引缺失导致的全表扫描,造成 IO升高,可以根据具体需要对相关表加索引。
取消进行中的索引创建。
如果当前集群中正在执行大表的索引创建,可以酌情取消,待集群恢复后再进行创建。