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