love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL/PostgreSQL数据恢复、性能优化、迁移升级、紧急救援等服务

gc freelist 引发的数据库实例hung案例

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

本文链接地址: gc freelist 引发的数据库实例hung案例

近期某客户一套系统不定期偶尔出现实例hung情况,导致业务运行缓慢;问题出现时间有时候是早高峰,有时候是晚上下班之后。通过同事提供的Oracle AWR报告来看,确实有一些异常:

gc freelist	引发的数据库实例hung案例插图

可以看到top event中出现了大量的索引分裂、buffer busy waits、以及高水位相关等待。实际上查看该awr我发现

数据库整体负载并不高,Sessions大概在1100左右,SQL executes 5000/s左右,同时每秒redo 日志量也就是1M/s.

最开始同事怀疑是Oracle AMM内存自动管理的问题,不过我分析前后2天的awr发现,在故障时间段内,内存其实并没有什么波动:

gc freelist	引发的数据库实例hung案例插图(1)

后续甚至怀疑过是不是NUMA没关闭导致的问题,这几个点我认为可能性都不大。由于数据库hung住,必然会产生hanganalyze trace文件,或许从这能看到一些有价值的信息(这也是Oracle的强大支持,国产数据库还需加强)。

从现象上来跟Oracle mos文档

描述是极为类似的。同时分析了其他diag trace完全类似,均在等待gc freelist。

根据文档提供的解决方案如下:

后面建议同事先把该参数从默认值110调整成200 观察几天试试。从目前调整的结果来看,2天过去了,一切正常。

Leave a Reply

You must be logged in to post a comment.