tomcat卡死,如何1分钟排查出问题所在

当tomcat因线程池耗尽而卡死时,可以通过模拟故障、获取线程dump、使用在线工具分析堆栈信息来快速定位问题。通过jstack分析线程状态,特别是关注BLOCK状态的线程,结合调用分析,能有效找出导致卡死的原因,如并发读取锁保护的代码。
摘要由CSDN通过智能技术生成

背景

因为tomcat的http线程池,默认是200, 如果线程池耗尽,则会出现无法提供服务的情况。

故障模拟

        某些情况下,可能http的TPS不高,但是内部程序有bug,导致了tomcat的http线程池的卡死。本文将会总结1分钟内排查出问题的方法。以下为示例:

        假设有一个Controller方法,模拟调用某个业务:

@RestController
@RequestMapping("/biz")
public class BizController {

	@GetMapping("/fire")
	public String fire(){
		return RpcInvoker.getUserInfo();
	}
}

        模拟业务的代码,这段逻辑中,readline里面是有锁的保护,不允许并发读取:

public class RpcInvoker {

	public static String getUserInfo(){
		Scanner scanner = new Scanner(System.in);
		scanner.nextLine();
		return "done";
	}
}

        此时,使用ApiPost进行批量调用,或者 PostMan也行,我比较喜欢用ApiPost,使用【一键压测】功能,并发数超过200,举例:改到300。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值