另外,jconsole中显示已启动的线程数1000多,活动线程数200多,不知道中两个参数什么意思。

解决方案 »

  1.   

    仔细检查使用到socket的类,在链接超时是否关闭?程序在客户端连接非正常关闭时,是否做处理了?
      

  2.   

    对于线程未处理,我感觉就是session没有结束呀,这样的现象很容易导致这样的错误,你试一下,对于代码优化,对于SQL语句进行优化!
      

  3.   

    确认你的所有的 URLConnection 的调用已经明确关闭,且赋值为null;
      

  4.   

    从调用栈中可以看到都是tomcat相关的,没有我自己的程序。
    即使说URLConnection 没有关闭,也不应该是线程涨呀。
    现在人气不忘呀,路过的留言。
      

  5.   

    另外我从jconsole中右侧框也看不到那么多的线程呀,究竟"阻塞总数:172  等待总数: 426"指导式什么?
    和jconsole中右侧框中的显示是什么关系。
      

  6.   

    是不是右击一下TOMCAT的控制太就可以了,线程就释放了
    我肯定不是程序的问题,可能是配置问题,即使输入一个不存在的链接,也会出现占用某个线程的现象,并且一旦占用,其占用的线程数就会很快的增加,
      

  7.   

    比如一个链接现在被GOOGLE收取了,过了几天你的服务器上把这个链接去掉了,程序也去掉了,但是在GOOGLE在定时更新抓取这个连接时,就会出现线程占用的现象,他也不是有搜索引擎引起的,只是在偶然的情况下,这个链接在被抓取时出现了长时间的占用线程,就会很快的增线程的占用数,导致别的请求不能够获取线程的 想象出现,我用户的是tomcat+apache(AJP端口),不是程序的问题,因为程序已经不在了,怎么还能占用线程那,所以现在我在测试是不是连接池的问题,我用的是C3PO,换成了DBCP数据源,还是不行,我在想通过一些服务器的线程管理机制来控制这个问题,至于,JCONSOLE中的堵塞,我也不是太清楚,老外的东西就是这样,搞不清楚,对我们学习很没有好处,其实没有技术含量,就是参数,配置的问题,只有他自己知道,所以还要努力呀,兄弟们
      

  8.   

    线程堆栈信息太少了,楼主有看到"waiting to lock "之类的东西吗?
    往往线程柱塞是因为需要获取某些资源锁,而导致的等待。
      

  9.   

    做ThreadDump一下,看看是什么在阻塞。
      

  10.   

    我用的TOMCAT,在这中情况下,我在TOCMAT的控制台右击鼠标就可以释放掉被占用的线程,并且可以看到打印出来的错误异常,不知道是怎么原因,原来是我配置的有LOG4J,这个东西对线程好像有影响,好像他会出现打印不了异常时,就会出现线程释放不了,后来我给卸掉了,就好了,
      

  11.   

    有没有考虑一下服务器ipv6和jdk socket的问题?