Tomcat线程数占满而导致的线上事故

本文详细记录了一次服务出现OOM故障的排查过程,通过分析*.hprof日志,发现tomcat线程池满导致问题。进一步代码审查揭示,未设置HTTP请求超时时间引发请求堆积,最终采取使用连接池及设置超时时间的措施解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事故表现形式:

昨天下午4点多的时候,有同学反映说,某个服务响应时间过长,怀疑是负载均衡的问题。

排查过程:

1,查看阿里云负载均衡表现正常,排除。

2,查看单台服务日志出现OOM,可以断定是服务出问题了。

分析原因:

1,先重启服务。

2,下载 *.hprof 日志,用MAT分析结果如下图:

3,结果明显指示tomcat线程池满了,并指向了其中一个controller的外部请求。

4,结合代码分析是请求外部HTTP连接没有设置超时时间,导致大量请求堆积,tomcat线程池满了,造成OOM。

解决办法:

1,HTTP请求使用连接池,设置超时响应时间

2,加上监控。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值