从第3份数据来看,性能更为恶化,情形更为复杂。
那么针对这个性能现象,可以提出如下的问题:
最直观的,最容易想到的就是,性能问题的出现是否与应用调整有关,如果是,为什么另一套库没有出现问题?会不会是另一套库的负载在2个节点都有相对均衡的负担,而出问题的库,负载全部集中在1个节点上引起?
客户是在应用调整几天后才报告性能问题,这个问题会不会是一个逐渐出现的问题?如果一开始就有严重的性能问题,那么应该会很快报告。不过中间跨了一个周末,所以对于”逐渐出现问题“的判断又加了一些难度。
这么多的性能问题相关的现象中,哪个更贴近问题的原因?实际上在主机的CPU长期保持在100%左右时,会放大平时的一些轻微的问题,或者引起另一些问题。从等待来看,latch: cache buffers chains和cursor: pin S都会引起CPU的急剧增加,而其他的latch竞争同样也会引起CPU的上升,虽然上升没有前者大。到底是SQL执行效率不高引起CPU急剧增加然后引起了shared pool latch等与解析相关的资源争用还是因为解析相关的问题导致CPU急剧增加引起了cache buffers chains等与SQL执行相关的latch争用?或者是2者的共同作用?
下面首先来分析,会不会是应用调整引起的问题,也就是说,是不是由SQL引起的问题。如果是SQL引起的问题,会有几种可能,1是部分频繁执行的SQL执行效率变差;2是增加了很多的硬解析;3是并发增加或者说是SQL的执行次数有上升。仔细检查对比现在和以前的AWR数据,可以排除第1和2这种可能。至于第3种,可能略有增加,但是不一定跟应用调整有关,毕竟正常情况下业务量的变化也是有可能的。所以应用调整引起问题的可能性较小。
会不会是因为负载过大引起的问题,这个很容易验证。取业务低谷期,比如下班时间的数据,进行分析可以发现,既然在CPU在稍低(75%以下)的时候,仍然有大量的library cache latch的争用。下面是取自周日19:00-20:00的AWR数据(注:本文涉及故障的分析时间是在星期一):
Top 5 Timed Events Avg %Total ~~~~~~~~~~~~~~~~~~ wait Call Event Waits Time (s) (ms) Time Wait Class ------------------------------ ------------ ----------- ------ ------ ---------- CPU time 49,224 48.3 latch: shared pool 185,951 41,178 221 40.4 Concurrenc latch: library cache 45,636 8,861 194 8.7 Concurrenc db file sequential read 815,066 4,763 6 4.7 User I/O cursor: pin S ############ 1,732 0 1.7 Other ------------------------------------------------------------- Avg %Time Total Wait wait Waits Event Waits -outs Time (s) (ms) /txn ---------------------------- -------------- ----- ----------- ------- --------- latch: shared pool 185,951 N/A 41,178 221 0.6 latch: library cache 45,636 N/A 8,861 194 0.2 db file sequential read 815,066 N/A 4,763 6 2.8 cursor: pin S 1,890,998,700 N/A 1,732 0 6,459.2 latch free 8,549 0 1,278 150 0.0 control file sequential read 1,507,789 N/A 466 0 5.2 Backup: sbtbackup 7 N/A 428 61096 0.0 log file sync 285,442 0 309 1 1.0 SQL*Net more data from clien 145,137 N/A 221 2 0.5 db file scattered read 67,716 N/A 173 3 0.2 gc buffer busy 56,842 0 135 2 0.2 gc cr grant 2-way 359,146 N/A 99 0 1.2 SQL*Net message from dblink 123,206 N/A 98 1 0.4 log file parallel write 289,048 N/A 91 0 1.0 SQL*Net more data to client 1,242,471 N/A 79 0 4.2 gc current block 2-way 179,654 N/A 66 0 0.6 direct path read 62,336 N/A 65 1 0.2 gc cr multi block request 228,693 N/A 52 0 0.8
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-30053-18.html
如果连自己的领海都能让人随便入侵