上线日记:生产CPU与内存资源耗尽

记一次上线出现的问题。

现象:上线后过了没多久突然发现整个网站的响应都特别慢,一次简单的查询都要经过60多秒。后台dubbo早已超时断开。

1:因为需要查询权限,所以一开始怀疑查询权限接口有问题,然后怀疑数据库查询慢,将生产执行的sql拼接好直接执行后发现速度很快。

2:直接怀疑服务器性能,通过查询服务器四个节点的cpu与内存的使用情况,发现cpu使用率均达到90%以上,且随着时间还在增长,内存也接近耗尽。

不用多想,接下来就是寻找占用cpu最高的线程了。

使用top命令

查询到占用cpu最高的pid(进程号)。

使用 top -Hp pid 

查询到tid为376056,377934,376056这三个进程占用了cpu的大部分使用率。

使用 printf ‘%x/n’ tid 

查询到这三个进程的id的十六进制

使用jstack pid | grep tid -A 50

查看线程的堆栈信息。

发现这个三个线程中,有一个为GC垃圾回收期在占用,另外一个为业务中的代码,到此可以判断,业务代码中应该会有一段代码一直在创建变量或者对象,引起内存不足,进而引起GC垃圾回收期一直在进行垃圾回收。

代码查看时,发现有一段代码确实可能会出现死循环的情况,至此,查排完成,拉hotfix,修复,二次发布。

PS:本次上线不仅仅有这个问题,折腾来折腾去,到了第二天七点才下班,再此,感谢和我一起加班的测试妹子,一直电话远程指导我得大佬及此篇文章的作者:https://blog.csdn.net/dam454450872/article/details/80382291。另,由于公司性质,服务器查询时的图片就不发了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值