我有这个奇怪的问题,Web应用程序通过JNDI连接到AS400 DB2服务器,从JNDI获取连接的时间大约是930-960秒!!!通常需要4ms才能建立连接,并且有时会跨越15分钟...它没有特殊的规则来确定何时/为什么会发生这种情况。我们正在使用JTOpen jt400.jar驱动程序版本7.0。
我们已将其设置为池中最少20个空闲连接,池中最多200个连接数,并且我们一次有10个人在Web应用程序上工作,因此几乎没有机会利用10个连接一下..
答案 0 :(得分:1)
启用应用程序的垃圾收集统计信息报告。
我的猜测是JNDI查找很大并且触发了一个“停止世界”的垃圾收集,这对于小池中的大型程序来说需要很长时间。
第二个猜测是您的连接未正确返回到连接池,因此JNDI查找需要 WAIT 才能使连接变老并被丢弃并替换为您的应用程序的新连接然后得到。
答案 1 :(得分:0)
确保在不再需要连接时始终正确关闭连接。否则,您将继续分配越来越多的连接,最终,DB2服务器将停止为您提供更多连接。等待几分钟让现有连接超时并给你那个。
要查看您拥有多少连接,请获取具有大量视图的优秀Advanced Query Tool来监视数据库的状态(谁连接,他们在做什么,哪些查询挂起死锁等等) )。是的,这需要花钱,但如果它能节省你一天的搜索错误,那就已经值得了。
答案 2 :(得分:0)
我会建议一些事情来试图诊断问题:
答案 3 :(得分:0)
15分钟听起来像是典型的超时持续时间,可能来自配置错误的DNS服务器。您应该尝试ping所有相关系统的主机名。
答案 4 :(得分:0)
阅读一篇关于类似主题的文章。 Java SecureRandom entropy是关于SecureRandom如何实现导致应用程序延迟大约20到30分钟的问题。也许它的一些调试方法可以帮助你解决它。