OB集群问题排查(一)之事务异常中断回滚
有研发反馈程序有异常事务回滚了,报错如下:
咋一看到,一头雾水,查看官网得知这是由于异常切主导致的事务回滚,如下图:
知道了是异常切主,接下来就是寻找为何会异常切主,以下是排查步骤:
首先我查看obproxy日志,在日志中搜索Transaction context does not exist 和 错误码 -6213 关键字,但是一无所获,然后我又在observer中搜索该关键字,依然是没查到,猜测该报错可能是返回给前端看的,日志中并不会记载。然后询问了研发报错的时间点,通过时间点找到对应的observer日志,搜索了ERROR关键字,发现了如下报错:
通过日志信息可以清楚的看到是磁盘hang住了,故而引起异常切主,那磁盘hang住为什么会引发异常切主呢?
原来OceanBase 数据库的 IO Manager 会通过探测线程尝试探测数据盘状态,如果超过data_storage_warning_tolerance_time(默认5秒)配置项指定的时间,探测发现这台机器的数据盘状态仍然未恢复正常,探测线程会将该数据盘状态设置为 WARNING,然后触发切主等事件以正常服务业务请求。
通过监控发现此时的磁盘等待时间确实超过了5秒,见下图:
至此,该问题已找到原因,然后把data_storage_warning_tolerance_time从5秒调到了10秒。
总结:
此次排查过程中,排查思路应该是没问题的,先查看obproxy日志,通过obproxy日志找到异常切主的数据副本所在的机器ip,然后再到该机器上查找observer日志判断异常切主的原因。但是排查中却屡屡碰壁,对OB问题排查的过程还是不太熟悉啊,有待进一步加强。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix