我希望你能帮助我,我在生产环境中遇到错误......我正在运行带有 MySql 连接器版本 5.1.2 和 Apache commons 连接池版本 1.3 的 Spring 主应用程序 java 1.7。
我的spring数据源配置:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${db.driverClassName}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
<property name="maxActive" value="100" />
<property name="maxWait" value="1000" />
<property name="poolPreparedStatements" value="true" />
</bean>
运行几个小时后,出现异常 org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object
起初我以为有连接泄漏,在运行 netstat 检查数据库连接后,我看到每件事都得到了很好的管理,并且连接量保持得很好,因为它应该比 maxActive 值低得多......
更奇怪的是,在每个当前时刻,该主应用程序的 3 个实例都在运行,每个实例的业务逻辑配置都不同,但每个实例的数据源配置都相同,问题是我只得到一个实例的异常,而另外两个像往常一样从数据库获取连接。
除了我的 Java 实例汇集了来自 MySql 数据库的连接之外,还有更多与数据库通信的服务,但是在我的 MySql 配置中,与数据库的总连接数要低得多。
我阅读了有关该异常的相关帖子,但主要问题是连接泄漏,但就我而言,我很确定我没有任何问题。
谢谢你的帮助....