使用jstack解决线程爆满问题

文章描述了一个生产环境中遇到的问题,由于前端配置的派生指标增加,导致后台生成大量线程,占用所有资源,引起系统性能下降和死锁。通过分析jstack日志,发现RUNNABLE状态的线程过多,定位到问题可能与AsyncRestTemplate的使用有关,特别是其原型作用域导致的线程池未关闭。解决方案是移除AsyncRestTemplate的原型作用域配置,以防止无限制创建线程。
    • 问题发现

生产应用现存在问题,影响到系统的使用,前端页面只配置了35个派生指标,后台任务生成20000多线程任务,占用了全部资源,导致其他系统也没资源可用,指标工厂也无法进一步使用,今天上午发的死锁也应该是这个原因引起的,在配置初期没有存在死锁的问题,派生指标配置的越来越多,后面配置的派生指标出现死锁的问题也越来越多,现在有5台机器,都已经快到机器的极限值,从前台配置和后台生成任务的比例来看,现在的代码应该是存在bug,或者在任务架构方面需要修改。

其中一台机器线程查询如下:

查看用户进程

[bdpcloud@host167 da]$ ps -u bdpcloud -L | wc -l

5348

统计RUNNABLE线程数量

[bdpcloud@host167 da]$ jstack 31

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值