一、故障描述
客户反馈一套业务数据库经常出现卡慢,甚至输入字符也会出现延迟效果,重新启动后,数据库查询速度得到提升,但随着使用频次增加,速度再次变慢。检查所有JSP网页发现,记录集、statement和数据库连接都已被释放。
二、故障处理
在经过一系列检查均显示无异常的情况下,工程师决定生成AWR报告深度分析,进而找到了问题所在,如下图:
看图并根据 AWR 详解分析:如果 soft parse%接近99% 而Execute to Parse %不足90%,则说明执行解析比率低, 可以通过静态SQL、动态绑定、session_cached_cursor、open_cursors等方法来减少软解析。
l 查看 session_cached_cursor 和 open_cursors,发现 session_cached_cursor值是 40,使用率为 100%,open_cursors值是 300,使用率 10%左右;
l 将 session_cached_cursor 改成 100,使用率仍为 100%,open_cursors使用率变为 35%左右,但是访问系统仍然比较慢;
l 尝试将 session_cached_cursor改成了 200,使用率达到了 93%,open_cursors使用率也达到了 65% 左右。
由此可以推断是 session_cached_cursor 参数设置不足导致了数据库卡慢,重新设置参数后,数据库的卡慢得以恢复。
之前使用 Navicat在服务器本地连数据库卡顿卡慢的问题也得到了解决。参考值为 session cursor cache hit (命中率)和 parse count (total)(解析总数),命中率越高,解析越少。
三、经验总结
工程师在日常巡检以及在每次的故障处理中,应尽量正确、全面的收集系统/数据库信息,方便遇到故障问题后进行排查,给故障处理的解决方案提供尽量多的参考。
如欲了解更多,请登录安图特官方网站:www.antute.com.cn