共计 200 个字符,预计需要花费 1 分钟才能阅读完成。
前提
测试同事对项目进行性能测试。以 500 个线程,每个线程访问 10000 次来访问 tomcat。测试进行 5 分钟后,tomcat 不再提供服务。用 visualvm 发现线程死锁。
解决方法。
网上有很多说降低线程数,但是这是压力测试,不能修改线程数。然后经过阅读 tomcat 源码。原因是使用 tomcat 的 nio 协议会创建两个 selector,导致死锁。由于没时间来码字,先把解决方案留下 —- 换成 nio2 协议解决
正文完