首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为地址为null和端口8080的连接器创建的最大线程数(200)

为地址为null和端口8080的连接器创建的最大线程数(200)
EN

Stack Overflow用户
提问于 2014-09-30 15:01:46
回答 1查看 5.7K关注 0票数 0

我在大约每7-8天就会得到这个错误。因此,为了调试此问题,我下载了线程转储文件。此文件有以下线程状态100次:

代码语言:javascript
复制
"http-8080-198" daemon prio=10 tid=0x08a62c00 nid=0x3a78 in Object.wait() [0x66467000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x87097728> (a org.apache.commons.pool.impl.GenericObjectPool$Latch)
    at java.lang.Object.wait(Object.java:485)
    at         org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1104)
    - locked <0x87097728> (a org.apache.commons.pool.impl.GenericObjectPool$Latch)

所以我的问题是:

  1. 这是因为mysql连接池的异常吗?如果是的话,我该怎么办才能解决呢?我的最大活动值是50,MinIdle值是1.
  2. 如果不是这样的话,那么我如何才能知道哪些功能包含线程呢?
EN

回答 1

Stack Overflow用户

发布于 2014-09-30 15:19:19

我在大约每7-8天就会得到这个错误。

最有可能的情况是,您没有决定性地清理所有资源(即,当您完成这些资源时),因此可以将连接返回到池中。GC将定期清理连接,但有时这还不够。简而言之,确保你总是在循环你的连接(除非它们已经死了)。

这是因为mysql连接池的异常吗?

这不是一个例外,它是您要求转储的堆栈跟踪。事实上,在线程转储中看不到异常(除非在非常罕见的事件中,您碰巧看到它创建了异常)。

如果不是这样的话,那么我如何才能知道哪些功能包含线程呢?

这些线程处于这种状态,因为它们没有什么可做的。很可能是因为另一个应该做某事的线程花费的时间太长了。我建议您查看正在运行的线程,或者在代码中等待的线程,看看哪些线程可能阻塞您的应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26124059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档