线上CPU打满100%问题处理思路。

今天线上出现了CPU告警,情况十分紧急。

我马上看线上服务器,发现CPU打满了100%以及出现了out of memory。我看了一下gc,发现服务器频繁full GC。我查看日志,发现入口流量很多超时,而且都是查询客户开票资料。想起我以前的总结,线上的服务频繁full GC,大概率是短时间频繁并发大流量访问,打满了新生代,新生代打满之后,就分配到老年代,老年代打满了就会进行full GC.。

其中full GC的优先级最高,当一次FULL GC完成,再来检查老年代,发现继续打满,又重新进行full GC,垃圾回收线程不断一直抢占CPU,导致CPU使用率达到100%,full GC不断回收,但是效果有限,每次只能回收一部分,又马上打满,导致cpu持续达到100%,以及线程han住,导致大量线程请求无法进行处理,CPU持续100%。

注意CPU100%,可以进行垃圾回收,但是效果有限。

OOM也就是内存溢出,没有足够的空间可以给新的对象,FULL GC毫无作用了。所以OOM更加严重。

  • 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
  • 内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间。

如何解决?我们后来发现,是微信公众号里面发了一篇文章,文章有一个跳转链接,造成大量客户短时间内并发访问。关于并发访问的QPS,一般来说37个QPS就能支持百万流量了,有的系统10个QPS支撑起来就够呛。

问题原因找到以后,我们马上对系统进行重启,恢复现场。同时对请求加缓存,以及限流操作。必要的时候我们可以调高JVM内存,以及增加机器,这个涉及到流量的预估。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值