最近用tomcat6(jsp+servlet,未用任何框架)做的网站项目经常挂掉,发现线程满了,maxThreads开始设的500,后来增加到3000,过了几天看已经超过3000了,服务就挂掉了,最大最小内存都设置为4g,服务器环境是windows 2008 r2 采用windows服务方式启动的,为什么线程不减少或不释放呢?
我在本机做了一个测试,tomcat启动,不访问任何页面,我看任务管理器里面tomcat的线程是45,访问了一个没有任何内容的jsp页面,线程数变成46,关掉ie后线程数还是46,为什么没有减少到45呢?

解决方案 »

  1.   

    还真没有碰到过这种问题,一个空的jsp也有这个问题,那应该是tomcat有问题了。下载一个新的tomcat重新安装,或者重新安装操作系统试试。
      

  2.   

    你看看
    http://blog.csdn.net/lxlterry/article/details/9162169
    是不是这个问题
      

  3.   

    没道理要配置那么多线程,线程数量太多,浪费在线程调度上的CPU就越多。楼主把线程数先缩减到 100,然后定期输出下 线程堆栈,尤其是满载后。研究下线程堆栈中,这些线程都堵塞在什么位置了。
      

  4.   

    rumlee:我原来是6.0.18现在换成6.0.37还是同样的问题
    我在本机测试的,线程数设为50,就打开一个空的jsp页面,没有任何其他操作,关闭ie后线程数不减少,主要是对tomcat的线程机制不是很清楚,不明白它为什么自己不释放?
      

  5.   

    TOMCAT的内置线程池是用过maxSpareThreads属性来判断是否需要回收线程的,你看下你的maxSpareThreads 配置的是多少,少于这个数量时tomcat不会回收线程的。
      

  6.   

    maxSpareThreads没有配置时,默认是50
      

  7.   

    Tom这只猫不老实,需要教训一下。
      

  8.   

    tomcat的问题了,不自动释放这个现象确实比较奇怪