问题现象
OCP 日志告警:partition table update task cost too much time to execute,一段时间后自动恢复。
完整日志如下所示:
[2024-05-20 22:10:55.932401] ERROR [SERVER] check_task_status (ob_partition_table_updater.cpp:124) [3881942][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=24] [dc=0] partition table update task cost too much time to execute(*this={part_key:{tid:1136895023254540, partition_id:41, part_cnt:0}, data_version:0, first_submit_time:1716214098207202, is_remove:false, with_role:false}, safe_interval=120000000, cost_time=157725196, interval=1800000000) BACKTRACE:0xeedbcd8 0xabcc9d0 0x4a5dbc4 0xabf3e18 0x4a5d93c 0xb3b2da8 0xb31dd40 0xb31dc44 0xb326620 0xb3ff190 0x4a555c8 0xedb6e98 0xedb6cdc 0xf0544dc
问题原因
这条 ERROR 日志的直接原因是内核汇报 Meta 表不成功,超过 2 分钟阈值导致告警。而汇报 Meta 表是通过一些内部的 SQL 完成的,SQL 类似 INSERT INTO __all_tenant_meta_table,因为转储阈值 freeze_trigger_percentage 与写入限速阈值 writing_throttling_trigger_percentage 配置的都是 80%,问题发生时租户的 MemStore 水位正好到达限速阈值,导致内部 SQL 的写入速度被限制,内部 SQL 执行时间过久。
关键信息
关键日志 report write throttle info,日志打印 report write throttle info 代表发生了写入限速,此时就容易出现 partition table update task cost too much time to execute 的告警。
问题的风险及影响
OCP 会有日志告警,此告警可忽略,写入限速恢复后告警可以自动恢复。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V3.x 版本。
解决方法及规避方式
解决方法:
当内存水位下降,写入限速解除后此告警可自动恢复,无需解决。
规避方式:
防止写入限速,例如降低转储阈值
freeze_trigger_percentage调高写入限速阈值writing_throttling_trigger_percentage扩大租户内存配置。