国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

一次性搞清楚线上CPU100%,频繁FullGC排查套路

发布时间:2019/07/01标签:   线程    点击量:

原标题:一次性搞清楚线上CPU100%,频繁FullGC排查套路
处置过线上成绩的同窗基础上都市碰到体系忽然运转迟缓,CPU 100%,以及 Full GC 次数过量的成绩。固然,这些成绩终极招致的直观景象就是体系运转迟缓,而且有大批的报警。本文重要针对体系运转迟缓这一成绩,供给该成绩的排查思绪,从而定位出成绩的代码点,进而供给处理该成绩的思绪。关于线上体系忽然发生的运转迟缓成绩,假如该成绩招致线上体系弗成用,那末起首须要做的就是,导出 jstack 和内存信息,而后重启体系,尽快保障体系的可用性。这类情形能够的起因重要有两种: 代码中某个地位读取数据量较大,招致体系内存耗尽,从而招致 Full GC 次数过量,体系迟缓。 代码中有比拟耗 CPU 的操纵,招致 CPU 太高,体系运转迟缓。绝对来讲,这是呈现频次最高的两种线上成绩,并且它们会间接招致体系弗成用。别的有几种情形也会招致某个功效运转迟缓,然而不至于招致体系弗成用: 代码某个地位有堵塞性的操纵,招致该功效挪用团体比拟耗时,但呈现是比拟随机的。 某个线程因为某种起因而进入 WAITING 状况,此时该功效团体弗成用,然而无奈复现。 因为锁应用不妥,招致多个线程进入死锁状况,从而招致体系团体比拟迟缓。关于这三种情形,经过检查 CPU 和体系内存情形是无奈检查出详细成绩的,由于它们绝对来讲都是存在必定堵塞性操纵,CPU 和体系内存应用情形都不高,然而功效却很慢。上面咱们就经过检查体系日记来一步一步鉴别上述几种成绩。Full GC 次数过量绝对来讲,这类情形是最轻易呈现的,特别是新功效上线时。关于 Full GC 较多的情形,其重要有以下两个特点: 线上多个线程的 CPU 都超越了 100%,经过 jstack 下令能够看到这些线程重要是渣滓接纳线程。 经过 jstat 下令监控 GC 情形,能够看到 Full GC 次数十分多,而且次数在一直增添。起首咱们能够应用 top 下令检查体系 CPU 的占用情形,以下是体系 CPU 较高的一个示例:top-08:31:10up30min,0users,loadaverage:0.73,0.58,0.34KiBMem:2046460total,1923864used,122596free,14388buffersKiBSwap:1048572total,0used,1048572free.1192352cachedMemPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND9root200255716028897615812S98.014.10:42.60java能够看到,有一个 Java 顺序此时 CPU 占用量到达了 98.8%,此时咱们能够复制该过程 id9,而且应用以下下令检查该过程的各个线程运转情形:top-Hp9该过程下的各个线程运转情形以下:top-08:31:16up30min,0users,loadaverage:0.75,0.59,0.35Threads:11total,1running,10sleeping,0stopped,0zombie%Cpu(s):3.5us,0.6sy,0.0ni,95.9id,0.0wa,0.0hi,0.0si,0.0stKiBMem:2046460total,1924856used,121604free,14396buffersKiBSwap:1048572total,0used,1048572free.1192532cachedMemPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND10root200255716028982415872R79.314.20:41.49java11root200255716028982415872S13.214.20:06.78java

上一篇:没有了

下一篇:没有了

返回
版权信息Copyright ? IT技术教程 版权所有??? ICP备案编号:鲁ICP备09013610号