前几日,下了班在家时突然收到监控报警,线上一组业务机器 CPU 被打满至 100%,为了保持服务的稳定运行,临时采取了升级配置、加机器等粗暴的方法将当晚扛了过去。
半夜想了下可能的原因,由于可能因素太多,不能确定,第二天到公司后,在一台预发机器上把 Java Mission Control 所需的参数配置好,然后就等待下一次问题出现呗,果然,没几天,在晚高峰时问题又复现了,马上将线上的流量分了一小部分到提前配置好的预发机器上,没过一会,预发机器的 负载 也满了。在 Java Mission Control 的 Thread 的面板里观察了一会,业务线程的 CPU 使用率根本不高,超过 10% 的都很少,但此时 CPU 又是被打满的,在不停查看 Java Mission Control 中提供的信息时,发现了 Full GC 非常频繁,在应用启动了两个多小时内,Full GC 了 1500 多次,占用了 13 多分钟,并且次数和时间依然在不停增加中,一下让笔者想到了之前在相关书籍上提到的频繁 Full GC 的相关问题,没想到在这里让笔者给碰上了,如图:
Read full article from 一次线上 CPU 飙升问题的分析解决 | Poison
No comments:
Post a Comment