我大约每 7-8 天在 prod 上收到此错误。所以为了调试这个问题,我下载了线程转储文件。该文件具有以下线程状态 100 次:
"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)
所以我的问题是:
这个异常是因为mysql连接池吗?如果是,我应该怎么做才能解决它?我的 MAX-Active 值为 50,MinIdle 值为 1。
如果不是这种情况,那么我怎么知道哪些功能正在持有线程?