cpu使用率_一种CPU使用率高的常见处置方法

昨天晚上在南宁和白鳝洞穴的老朋友小聚一场。大多数朋友是2003-2008年在网上聚在“白鳝的洞穴”QQ群的,不过很多那时候的翩翩少年的鬓角已经看到丝丝白发了,老白也到了知天命的年龄,时间真的过的很快。先上一张昨晚的合影,喝了点酒,大家的表情都放的挺开。

7b6fb07afc1a27d431e65983b5a23e75.png

看完照片我们言归正传。这是一个十年前的案例。客户发现系统较慢,CPU开销很高,平均处于70%以上。于是在QQ上让我帮助诊断。我首先要他发来一份AWR报告。

63d8f20047457cede449bf5bf8aaaa8c.png

从负载上看,不是很高,逻辑读的数量51.7万,不过十多年前的小型机比起现在的X86服务器来性能都差了一大截,这个系统当时也算是负载比较高的了。可能有很多朋友看到LIBRARY CACHE命中率才不到70%就会把目光关注在这上面了,客户的DBA也怀疑LIBRARY CACHE是不是问题的根源。实际上,我们看non-parse CPU的比例为98.4%,就可以放心了,LIBRARY CACHE 大概率不是导致CPU使用率过高的原因。这是一个10.2.0.4的库,所以CPU使用情况需要我们自己算一算:

ca1c509edccf1ef216593af5012286a9.png

这个系统有16个CPU核,通过计算可以算出大概CPU IDLE的比例是20%左右,一个2小时的SNAP里,这么高的CPU使用率确实算是很高了。估计经常会有瞬间CPU达到100%了。当然CPU使用率高并不一定意味着存在瓶颈,不过客户已经感觉系统有些,说明CPU使用率高很可能真的已经影响到了系统的整体性能。下面我们来看TOP EVENT:

61e2ef589e2ea39ca172f906724f1dae.png

CPU TIME排在第一位,这意味着系统中可能存在高开销的SQL。排在第二位的很是让人意外,居然是LOG FILE SYNC,而且平均等待时间居然高达58毫秒,这对于写操作的事务肯定产生了较大的影响。第三位的是TX锁,可能受到其他因素的影响,也可能应用本身就有很多争用。排在后面的两个是集群相关的等待,平均指标也不太好。

b2a4db4b2170e5908f6ab42b3ea8d32c.png

既然存在LOG FILE SYNC等待,我们就有必要马上看看LOG BUFFER的配置,才不到10M,确实是比较小。不过每秒REDO才185KB,这个BUFFER大小也还能应付。下面我们需要去分析LOG FILE PARALLEL WRITE的情况:

59667ddbcaacdba37e85e7583e969efc.png

才3毫秒,看样子LOG FILE SYNC等待50多毫秒确实是有些不合理。这可能和GCS/GES性能有关,看看相关指标:

4f15424d0bc3befc0209c5a7da1f62be.png

每秒INTERCONNECT流量才1826K,不高,不过CR BLOCK和CURRENT BLOCK的RECEIVE TIME都不太好,超过100毫秒。

c06d48d53e12fbac49277713bb3fcffe.png

消息传输的指标也不尽如人意,通过队列发送的消息延时居然高达99毫秒左右,而且有35%的消息是非直接发送的,35.96%出现了流控。RAC的性能指标为什么会这么差呢?这肯定会对应用产生较大的性能影响。不过RAC集群通信性能差也有可能是CPU使用率过高引起的。

009d93b3b672be9668e094a9eaf8986f.png

从WAIT CLASS上看,系统等待的消耗多是在集群上,其次是提交(和LOG FILE SYNC等待有关,也可能受到集群性能的间接影响),第三是应用。

144d8b1df52f54c5bc5f7afb7ca3659b.png

从等待事件上看,情况还是挺复杂的,甚至出现了DFS LOCK HANDLE等待,单块读的平均延时也不太好。 调整LOG BUFFER之类的操作暂时还无法完成。现场用户发现营业厅压力开始大起来,业务部门反映一些营业厅的窗口排队的人也多了起来,希望我们尽快解决问题。 于是在这种复杂的情况下,降低CPU使用率成为解决当前问题的关键。于是我不再耽误时间,直接查看 TOP SQL:

08d0e05958091d957cb33ebe6d4a8bf0.png

几条INSERT语句可以先不管。重点看看这几条DELETE语句,发现这几条DELETE语句都是走全表扫描,于是马上做了个awrsqrpt。

54ec9b953cee1f0e172f87ff7b8ef872.png

执行这么频繁的语句居然走全表扫描,于是我们确定马上建一个索引,降低这几条语句的逻辑读,缓解CPU使用率。由于系统十分繁忙,这个建索引工作尝试了多次才成功(业务高峰期不敢ONLINE模式创建索引)。索引创建后,CPU使用率立即降低了30%以上。很快,营业厅反馈系统性能有了较大好转,业务人员能够接受当前的性能了。实际上这个案例,到解决之时还是没有彻底搞清楚问题的根源。主要是两个原因,一是我们是通过远程支持解决问题的,对于DFS HANDLE方面的问题没有做任何分析,另外一个原因是业务部门需要尽快解决问题。于是我们选择了采用见效最快的方法去做处置,对于DFS LOCK HANDLE,单块读延时过高,GCS性能问题等都没有去做深入分析。不过有时候生产系统,也只能这样了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值