OBServer报错,ERROR [CLOG] check_leader_sliding_window_not_slide_和leader_active_need_switch_

【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】3.1.1
【问题描述】当时的现象是该observer节点cpu突然上涨,然后服务夯住,具体报错日志如下:
ERROR [CLOG] check_leader_sliding_window_not_slide_ (ob_log_state_mgr.cpp:2330) [31521][2399][Y0-0000000000000000] [lt=25] [dc=0] leader_active_need_switch_(partition_key={tid:1100611139453796, partition_id:1152921629429334018, part_idx:29, subpart_idx:2}, now=1698247611220322, last_check_start_id_time_=1698247601210173,…
【复现路径】问题出现前后无异常操作,只是常规的CRU
【问题现象及影响】整个ob集群不能正常提供服务,虽能正常连接,但任何查询都无响应,导致线上数据批量延迟。已确认clog盘未满,请问可能是什么原因呢?期待回复,非常感谢

检查下是不是存在大事务,大事务存在可能导致滑动窗口不滑
事务callback是事务写日志回调,commit或者切主日志回调的时候会遍历callback。
大事务因为callback太多会导致时长太长,而这个行为是在clog回调线程里面做的,从而影响滑动窗口不滑。
如果确认是大事务导致的,可以减小事务粒度,分批提交。

1 个赞

感谢回复,请问有什么办法能够定位是否是大事务的原因吗?业务场景上我们有实时的批量写入,50/batch,然后实时的批量更新操作,5/batch,然后每30s一次增量变更读取,然后会有报表数据明细查询,并发应该不大,这些算大事务吗?另外假如有大的in查询,比如in (1k+…values)这种,算大事务吗?会有可能引起这个问题吗?

有可能