我的问题是我有两个应用程序都获得了这些例外:
引起:org.apache.tomcat.jdbc.pool.PoolExhaustedException: [pool-2-thread-273]超时:池空。无法获取连接 在30秒内,没有可用[尺寸:100;忙碌:99;空闲:0; lastwait:30000]
有两个应用程序:
默认情况下,两个应用程序都使用org.apache.tomcat.jdbc.pool.ConnectionPool(因为我没有在任何地方配置默认池,两个应用都使用此功能)。此外,我的最大连接限制是200并且仅使用< 130个连接,所以我没有遇到最大连接问题。由于两个应用程序使用单独的数据源,我读到这意味着它们不能是相同的conn池。
当我登录我的postgres服务器时,我可以看到app 2有100个空闲连接,并且池的最大空闲大小为100.所以这很好。但是,我没想到的是我的应用程序1将使用来自应用程序2池的连接 - 或者更确切地说,因为看起来应用程序共享连接池 - 我认为应用程序1正试图从此公共池中获取已经分配了100个连接。我真的没想到,因为他们使用tomcat conn池而且AppB甚至不使用tomcat,那么为什么要共享它们呢......
所以我的问题是(因为我真的很难找到关于此的文档):
注意:使用grails 2.4.5和postgres服务器90502