这是我得到的例外
的数据
这是我在c3p0中使用的配置
<property name="acquireIncrement">5</property>
<property name="preferredTestQuery">SELECT 1</property>
<property name="checkoutTimeout">2000</property>
<property name="idleConnectionTestPeriod">30</property>
<property name="initialPoolSize">5</property>
<property name="maxIdleTime">18000</property>
<property name="maxPoolSize">500</property>
<property name="minPoolSize">5</property>
<property name="maxStatements">20</property>
<property name="testConnectionOnCheckin">true</property>
<property name="unreturnedConnectionTimeout">60</property>
<property name="debugUnreturnedConnectionStackTraces">true</property>
字符串
我当前连接池情况的屏幕截图如下:
你可以看到在图片中只有27个连接目前存在于连接池中,而我的maxPoolSize是500,我仍然无法建立更多的连接。
有人能在我得到这个异常的时候弄清楚吗?
1条答案
按热度按时间xesrikrc1#
将 checkout 时间值增加到更高的值,如10000(10秒)或30000根据设计,c3 p0池管理器将尝试首先建立到DB的连接,然后将这些连接对象添加到池中,直到它达到更高的值(例如:-30至200)只有在此之后,才会向应用程序中等待的http线程提供给予DB连接。同时,如果http线程获取连接对象的时间超过2秒,然后它将抛出超时错误-“客户端尝试 checkout 连接已超时”并返回。