【OceanBase诊断调优】—— 磁盘性能问题导致卡合并和磁盘写入拒绝排查

适用版本

OceanBase 数据库 V3.x、V4.x 版本。

问题现象

OceanBase 集群合并一直未完成,同时 tsar 和 iostat 显示从凌晨 2:30 开始磁盘使用率一直是 100%。怀疑合并导致 IO 上升,IO 可能存在问题,observer.log 的确有大量报错 disk is hung, disk has fatal error

问题原因

磁盘为机械盘,且 /home/admin /data/1/data/log1 混用同一块磁盘。磁盘性能太差,导致业务操作报 -4012 OB_IO_TIMEOUT-4009 OB_IO_ERROR,这会触发 IO 探测线程检测磁盘是否有问题,如果超过 data_storage_warning_tolerance_timedata_storage_error_tolerance_timelog_storage_warning_tolerance_time 这几个超时时间还没有恢复,就会触发 data 和 slog 的快速拒绝。

解决方法

  1. 日志限流。在此故障情况下,大量写入 ERROR 日志本身也会占用大量带宽,可能会导致问题更严重。

    alter system set syslog_io_bandwidth_limit='1MB';
    
  2. 增加 IO 探测的超时阈值,避免磁盘性能问题导致 data 和 slog 的快速拒绝。

    alter system set data_storage_warning_tolerance_time = 60s; --默认 5s
    alter system set data_storage_error_tolerance_time = 600s; --默认 300s
    alter system set log_storage_warning_tolerance_time = 60s; --默认 5s
    
  3. 将已经被快速拒绝的磁盘洗白。

    alter system set disk valid server '$192.xxx.x.x:2882';(所有服务器)
    

修改设置后,IO 报错消失,合并开始推进,可以看到待合并的分区数量在逐渐减少。

select count(1) from __all_virtual_tablet_meta_table where tenant_id = 1001 and compaction_scn < xxx;
-- xxx 填写的是 cdb_ob_major_compaction 查到合并未完成租户的 global_broadcast_scn
相关推荐
老年DBA3 天前
【无标题】observer: error while loading shared libraries: libmariadb.so.3处理办法
数据库·oceanbase
@素素~3 天前
OceanBase—02(入门篇——对于单副本单节点,由1个observer扩容为3个observer集群)——之前的记录,当初有的问题未解决,目前新版未尝试
数据库·oceanbase
OceanBase数据库官方博客3 天前
快手:数据库升级实践,实现PB级数据的高效管理|OceanBase案例
oceanbase·分布式数据库·实践经验
好记忆不如烂笔头abc5 天前
测试部署单副本 oceanbase-3.2.4.1 企业版
oceanbase
OceanBase数据库官方博客5 天前
利用 Local Data 导入文件到 OceanBase 的方法
银行·oceanbase·分布式数据库·保险证券
OceanBase数据库官方博客6 天前
遇到慢SQL、SQL报错,应如何快速定位问题 | OceanBase优化实践
sql·oceanbase·分布式数据库·实践经验
救救孩子把6 天前
OceanBase企业级分布式关系数据库
数据库·分布式·oceanbase
OceanBase数据库官方博客7 天前
DDL 超时,应该如何解决 | OceanBase 用户问题集萃
oceanbase·分布式数据库·ddl
光锥智能7 天前
OceanBase云数据库战略实施两年,受零售、支付、制造行业青睐
数据库·oceanbase·零售
爬树的小蚂蚁7 天前
OceanBase 一级表分区记录
oceanbase