服务器CPU突然飙升和GC频繁处理

当服务器运行缓慢并伴随大量报警,可能是CPU过高或FULL GC频繁。通过jstack、jstat等工具排查CPU飙升(可能是内存溢出导致的频繁GC)、不定期接口耗时、线程WAITING状态或死锁等问题。解决思路包括优化代码、调整内存配置等。
摘要由CSDN通过智能技术生成


如果遇到线上服务器系统运行突然缓慢并有大量报警的现象时,那么可能系统的CPU过高或者FULL GC 次数过多,我们可以通过以下方法进行排查和解决问题。


排查思路:


如果因为系统突然运行缓慢导致服务不可用的时候,我们首先要做的是导出 jstack 和内存信息,然后重启系统,尽快恢复服务。这种情况的原因主要有两种:
代码中某个位置读取数据量较大,导致系统内存耗尽从而 FULL GC 次数过多,系统缓慢;
代码中有比较耗 CPU 的操作,导致CPU 过高,系统运行缓慢;
还有几种情况会导致某个功能运行缓慢,但是不至于导致系统不可用:
代码某个位置有阻塞性的操作,导致该功能调用整体比较耗时,但出现是比较随机的;
某个线程由于某种原因而进入WAITING状态,此时该功能整体不可用,但是无法复现;
由于锁使用不当,导致多个线程进入死锁状态,从而导致系统整体比较缓慢;
对于这三种情况,通过查看CPU和系统内存情况是无法查看出具体问题的,因为它们相对来说都是具有一定阻塞性操作,CPU和系统内存使用情况都不高,但是功能却很慢。

解决思路:


1.FULL GC次数过多
这种情况主要有两个特征:

  • 多个线程 CPU 非常高,并且通过 jstack 命令可以看到这些线程主要是垃圾回收线程;
  • 通过 jstat 命令监控 GC 情况,可以看到FULL GC 次数非常多,并且可能还在不断增加;
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值