[转载Oracle官方中文博客]关于RunQ过高引起的latch等待问题
原文网址:
https://blogs.oracle.com/Database4CN/entry/%E5%85%B3%E4%BA%8Erunq%E8%BF%87%E9%AB%98%E5%BC%95%E8%B5%B7%E7%9A%84latch%E7%AD%89%E5%BE%85%E9%97%AE%E9%A2%98
关于RunQ过高引起的latch等待问题By Mao Bin-Oracle on十一月 20,2016最近一个客户新上线系统做压力测试发现负载一直上不去,cpu 只有20%左右, 上述top10可以看到,的确latch: ges resource hash list等待占用了大量的 看看AWR的负载情况: Snap Id Snap Time Sessions Cursors/Session Instances Host NamePlatformCPUsCoresSocketsMemory (GB) Buffer Cache: 214,528M 214,528M Std Block Size: 8K <<<214G 上面看出新系统配置非常高,512颗cpu,内存接近1T,给DB使用也 的确idle平均超过80%,但是仔细看RunQ居然达到40,Runq意思是有多少 进程处于可运行队列中,正在等待cpu调度,剩余那么多cpu资源居然还有大 量进程在排队等待运行,这是非常奇怪的现象,再次查看mpstat输出: cpu min maj mpc int cs ics rq mig lpa sysc us sy wa id pc 0 236 0 0 440 828 12 1 45 100 2539 52 9 5 34 0.38 <<<<工作cpu 1 0 0 0 194 0 0 0 1 100 0 0 1 0 99 0.21 2 0 0 0 189 0 0 0 1 100 0 0 1 0 99 0.21 3 0 0 0 191 0 0 0 1 100 0 0 1 0 99 0.21 4 150 0 0 318 771 62 1 57 100 7003 37 15 1 46 0.36 <<<<工作cpu 5 0 0 0 191 0 0 0 1 100 0 0 1 0 99 0.22 6 0 0 0 191 0 0 0 1 100 0 0 1 0 99 0.22 7 0 0 0 188 0 0 0 1 100 0 0 1 0 99 0.21 ...... 从上面可以看出列出8颗cpu只有2个在干活,所以整个系统只有1/4 cpu在干活,最终定位是OS 问题 。从上面的问题分析来看,对于latch等待过高的场景除了怀疑已知bug之外最有 可能的是CPU资源不足,若是idle很空闲,可能是OS层面的问题,这次Runq就给了我们 一个很好的线索,所以一定要结合OS层面的监控数据来进一步分析原因。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |