故障描写:
2014-3-24
RAC数据库,应用系统运行异常,登录不进
数据库信息查看:
后台CPU飙升厉害,资源使用过大。发现两个节点锁等待超过1100,并且还在不断增长
解决办法:
部分外来进程的kill,锁等待消除。
分析报告:
我们可以通过分析故障前后的数据库运行状态来分析问题,比如:
故障时的数据库状态如下:
故障处理后的数据库状态:
故障发生时,p_pub_user_online_curd在54分钟被执行了83229次,相当于每秒26次;
故障处理后,p_pub_user_online_curd在 70分钟执行了54562次,相当于每秒13次。
通过比较可以看到,故障时的系统负载比非故障时提高了一倍。
因为p_pub_user_online_curd(:1, :2, :3)存储过程,涉及到序列SQ_MENULOG和SQ_PUBLOGS的存取,由于序列的cache默认为20,所以在高并发的情况下,会导致enq:SQ-contention,大量的序列等待导致服务器cpu飙高。这个从AWR报告中也有体现:
序列冲突引起的等待时间占用了数据库90%以上的CPU时间。
解决措施
1、 降低存储过程p_pub_user_online_curd调用的频率;
2、 将SQ_MENULOG和SQ_PUBLOGS的缓存从20调整1000,执行语句如下:
alter sequence SQ_MENULOG cache 1000;
alter sequence SQ_PUBLOGS cache 1000;来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28869493/viewspace-1128506/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28869493/viewspace-1128506/