Tomcat卡住不响应请求但未抛出异常
一 Tomcat卡住不响应请求但未抛出异常
原文地址:https://blog.csdn.net/L_BestCoder/article/details/79208514?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.channel_param
前段时间在做一个android平台的QQ,老人护理13825404095服务器端是跑在Tomcat上的,但是每次测试一会,Tomcat就会卡住,不在响应任何请求,包括HTTP请求和TCP请求都不在响应。
后来想到可能是连接池占满了,而且都未被释放,就通过系统命令查看了一下Tomcat监听的8080端口和Netty服务器监听的52621端口(自定义的),发现有一大堆ESTABLISHED的连接,而且很多都是源于同一个ip地址,说明android端在发起HTTP请求或者TCP请求后都未把连接关闭,最后把该及时close的和disconnect的都做了处理。就不会出现这样的情况了。
附上端口连接检查命令:
windows:
netstat -aon|findstr "8080"
linux:
netstat -na | grep ESTAB | grep 8080 | wc -l
二 tomcat 无法及时响应,http 请求一直pending状态
原文地址:https://blog.csdn.net/u012402177/article/details/81004539
新起了一个tomcat,为前端调用服务,刚起来后一会不知为何,前端告知http请求一直是pending状态,因为一不小心点击控制台里面的时候,会变成正在编辑,tomcat就不跑了,窗口设置默认选择了 “快速编辑模式,选项去掉,就可以了,(需要重启,不然选项即使去掉 对当前窗口不生效),解决!!!
三 pendding状态解决过程
1.jstack pid抓取jvm线程状态 2.查看结果,发现很多线程在等待waiting to lock <0x0000000716821260> (a org.hibernate.util.SoftLimitMRUCache)锁; 3.其中有一个是加锁线程:- locked <0x0000000716821260> (a org.hibernate.util.SoftLimitMRUCache); 4.查询waiting to lock <0x0000000716821260> (a org.hibernate.util.SoftLimitMRUCache),发现此问题为hibernate3.1.X的bug,多线程不安全,可能出现死循环。