租户长时间未合并、长时间未冻结问题排查

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】observer-4.3.5.4 OCP-4.3.6-20250815135607
这个集群架构是单节点集群,用于存储历史数据。
【问题描述】租户长时间未合并,每天合并时间是凌晨2点,本次报错长时间未合并的时间是从3-16 2:00 到现在(3-17 12:45);
2026年3月17日 02:35:09有一个metadb集群的一个非预期内部错误告警,但是本次告警长时间未合并、长时间未冻结的集群是bk_xxxxx集群。


集群(租户资源)

【复现路径】问题出现前后相关操作
1.业务租户查询:GV$OB_TABLET_COMPACTION_PROGRESS


2.sys租户查看:select * from oceanbase.GV$OB_COMPACTION_DIAGNOSE_INFO ;


DIAGNOSE_INFO:current_status=“dag may hang”,merge_progress={ObCompactionProgress:{tenant_id:1004, merge_type:“MAJOR_MERGE”, merge_version:0, status:2, data_size:3579, unfinished_data_size:3579, original_size:0, compressed_size:0, start_time:1773600674465299, estimated_finish_time:1773600691466705, start_cg_idx:0, end_cg_idx:0}, is_suspect_abormal:true, create_time:1773600674465172, latest_update_ts:1773600674466703, dag_id:YB420A97D74C-00064A06F12FF6A3-0-0, base_version:0, snapshot_version:1773597608494261000, status:2}

3.查看 select * from GV$OB_MEMSTORE

【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

针对您的问题,推荐使用 obdiag 工具进行日志采集,以便我们可以进一步分析问题的原因。

日志采集场景: 合并问题
日志采集命令: obdiag gather scene run --scene=observer.compaction

请您使用上述命令采集日志,并将采集到的日志提供给我们以便确认问题所在。此外,为了更好地了解具体情况,请您提供以下信息:

  1. 在这段时间内是否有执行过大量写操作或大事务?
  2. 系统在这段时间内的负载情况如何?是否存在高负载的情况?
  3. 您是否有在集群配置中调整过合并相关的参数?如果有,请提供具体的参数及其值。
  4. 能否提供最近几天的日志,特别是 3-16 和 3-17 两天的日志?
  5. 是否有观察到其他异常现象,如系统告警、网络故障等?

通过这些信息,我们将能够更准确地定位问题并提供解决方案。感谢您的配合!

附上敏捷诊断工具 obdiag 使用帮助链接

日志文件比较多,目前只有17日的observer.log了,提供近期2个文件可以 吗?

学习一下实战经验,持续关注一下

怀疑是内部死锁导致 麻烦提供一下ob的日志

提供近期2个observer.log 够吗? 还是要全部的?

凌晨2点的已经没了吧?先提供最新的两个吧。

obstack这个命令 需要进入到observer目录下 obstack ${pid of observer} > obstack.trc
使用obstack打一下 堆栈信息

obstack1.trc.gz (68.3 KB)

两个observer.log压缩之后50M,上传不了,怎么给您同步这个日志文件呀。

单独一个一个上传试试,一般压缩完只有30mb左右。
查询下这个sql
SELECT * FROM oceanbase.__all_virtual_trans_stat
WHERE tenant_id = 1004 AND ctx_create_time < DATE_SUB(NOW(), INTERVAL 30 MINUTE)
ORDER BY ctx_create_time;

这个sql在sys租户和用户租户执行结果为空。没有输出。


SELECT * FROM oceanbase.__all_virtual_dag_warning_history
WHERE tenant_id = 1004 ORDER BY gmt_create DESC LIMIT 20;

observer.log.20260317143435902.gz (27.9 MB)
observer.log.20260317143521332.gz (27.0 MB)

查询结果为空

老师,刚才重新查询:
select * from oceanbase.GV$OB_COMPACTION_DIAGNOSE_INFO ;
结果跟12点的结果不一样了,status变成了FAILED,INFO信息如下:


error_no=-4012,last_error_time=1773730327657309,error_trace=YB420A97D74C-00064A10F65C3D87-0-0,location=ob_tablet_merge_info.cpp:196(create_sstable),warning=“MAJOR_MERGE/MEDIUM_MERGE;ls_id=1001;tablet_id=211135;compaction_scn=1773597608494261000;exec_mode=“EXEC_MODE_LOCAL”,concurrent_cnt=6”

observer.log.20260317145242835.gz (27.4 MB)

大概原因查到了,存在[errcode=-6325] disk hang error(ret=-6325。
clog的磁盘hung住了,导致无法freeze任务超时无法结束。
麻烦确认下磁盘问题吧

好的老师,关停一段时间数据同步任务之后,合并操作 还能缓过来吧?