近日,在某生产环境上,用户反馈CPU突然暴涨到100%,根据用户的描述,依次做了以下分析排查:
1、查询活动会话远高于平常:
2、查询已执行超过2秒的活动SQL
select * from (
SELECT sess_id,sql_text,datediff(ss,last_recv_time,sysdate) Y_EXETIME,
SF_GET_SESSION_SQL(SESS_ID) fullsql,clnt_ip
FROM V$SESSIONS WHERE STATE=‘ACTIVE’)
where Y_EXETIME>=2;
发现有很多SQL堆积。
3、查询是否有阻塞:
select * from V$TRXWAIT;
发现确实发生了阻塞:
4、查询被阻塞的信息和引起阻塞的信息
5、根据查到的引起阻塞的信息,与用户确认后,试着杀掉阻塞源头的会话,但是杀掉后,并未完全消除阻塞,与用户沟通了解后得知,该业务模块为新上的业务,各级管理员可以自己建模的一个操作,存在不同事务同时操作同一条数据的情况,与用户沟通后,临时将所有引起阻塞的会话都杀掉,并反馈应用进行代码优化。
–查杀所有引起阻塞的会话:
6、杀掉引起阻塞的会话后,活动会话逐步降低,CPU逐步趋于正常水平。
文章
阅读量
获赞