后台程序负责访问数据库,返回结果。前后台程序部署在两台不同的linux服务器,采用apache+tomcat部署。
出现问题描述:前台tomcat频繁死掉
前台在并发量大的时候tomcat会出现All threads (512) are currently busy, waiting.Increase maxThreads (512) or check the servlet status警告(原来是200,后改为512也不行),此时apache的进程数会不断增加,直到
802最大值,然后不久tomcat就会死掉。从出现"All threads..."警告到tomcat死掉有20分钟左右的时间,这段时间访问前台是没有响应的,后台可以响应。
起初以为是前台程序程序的链接没有释放造成的,修改了代码,代码是用java写的,前台使用HttpClient访问后台,得到返回结果,加入了method.abort();method.releaseConnection();方法去释放链接,并且也加入了链接超时的处理,可同样会出现这个问题。奇怪的是在本地模拟测试,加大压力,会产生"All threads..."警告,但是本地tomcat不会死,而线上就会死。都有点怀疑是不是服务器本身的问题了。
实在找不出问题,请高手指点,谢谢!!
7 个解决方案
#1
查一查你的系统里是不是有
HttURLConnection 之类的,调用自己的页面的代码。他们可能忘了关了!
HttURLConnection 之类的,调用自己的页面的代码。他们可能忘了关了!
#2
紫竹是无处不在啊,支持你!
#3
一般都是连接未关闭
#4
netstat 看一下就知道了
#5
我c 你MM
#1
查一查你的系统里是不是有
HttURLConnection 之类的,调用自己的页面的代码。他们可能忘了关了!
HttURLConnection 之类的,调用自己的页面的代码。他们可能忘了关了!
#2
紫竹是无处不在啊,支持你!
#3
一般都是连接未关闭
#4
netstat 看一下就知道了
#5
我c 你MM