我的物联网项目(九)久违的死循环

在物联网项目的开发中,由于业务调整和新需求,频繁的版本迭代导致线上服务器出现Java进程CPU飙升的问题。通过top命令和线程分析,发现是新代码中的线程池死循环造成大量线程产生,未及时释放。使用jstack定位到问题代码,提醒开发人员注意newCachedThreadPool可能导致的过度线程创建和CPU资源耗尽。
摘要由CSDN通过智能技术生成

旧业务不断的调整,新的需求不断的开发,版本不断的迭代,这个是当前项目的一个暂时不可改变的现状。再加上每个开发人员写代码的风格和层次不一样,所以有很多本来可以在写代码过程中避免的问题非要通过线上的报警才能发觉。

最近两天线上linux服务器发现java进程CPU不断的飙升,新发的包过一会儿CPU就慢慢上涨,感觉很奇怪,之前没有这种情况,应该开发人员新写的代码所导致,排查问题如下:

一 使用top命令

使用top命令

top

结果如下:

过了一会儿,继续top查看

 

二 查询具体的线程CPU占用率

使用命令 ps -mp 5910 -o THREAD,tid,time

ps -mp 5910 -o THREAD,tid,time

结果如下:

可以看到5910号进程产生了大量的线程,继续查看该线程的具体执行情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值