我开发一个非常负载(请求)的应用程序。 我曾经在我的appliation以下技术:无法打开连接
- JPA/Hibernate作为persistense层
- 春春道
- C3P0作为连接池
我的问题是:我跑我的应用程序,当请求数增加时,抛出异常在“不能打开连接”的 附加层 我增加oracle max session但是我的问题没有解决 我在C3p0 doc中检测并且测试它的选项,但是我的问题没有解决。
感谢您的关注
我开发一个非常负载(请求)的应用程序。 我曾经在我的appliation以下技术:无法打开连接
我的问题是:我跑我的应用程序,当请求数增加时,抛出异常在“不能打开连接”的 附加层 我增加oracle max session但是我的问题没有解决 我在C3p0 doc中检测并且测试它的选项,但是我的问题没有解决。
感谢您的关注
您增加了Oracle上的最大会话数,但您并未增加连接池的最大大小。例外是告诉你你的游泳池已经用完了。要么找到保持连接打开的状态并尽早让它们释放,要么增加池中最大活动连接的数量。
是否有可能为您的DataSource发布Spring配置。我希望是这样的:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
<property name="jdbcUrl" value="${jdbc.connection.url}"/>
<property name="user" value="${jdbc.connection.username}"/>
<property name="password" value="${jdbc.connection.password}"/>
<property name="initialPoolSize" value="5"/>
<property name="minPoolSize" value="5"/>
<property name="maxPoolSize" value="100"/>
</bean>
随着配置的其他bean,其中数据源是通过引用传递:
<bean id="mySampleDao" class="com.example.dao.MySampleDao">
<property name="dataSource" ref="dataSource" />
</bean>
这是你有什么?
您使用的是哪个版本的Oracle?
超时是,我有上述结构。我正在使用'Oracle 11g'。 – MJM
我很难理解这个问题。你介意编辑它,并且将所有重要信息(连接池设置,甲骨文轮廓限制等),以便有足够的清晰度? –
我C3P0设置为:\t \t initialPoolSize = 5 了MinPoolSize = 5 maxPoolSize = 100 maxIdleTime = 30000 unreturnedConnectionTimeout = 90 propertyCycle = 60 acquireRetryDelay = 1000 maxConnectionAge = 0 acquireIncrement = 1个 acquireRetryAttempts = 0 当然 我测试C3p0几个值和其他选项,但不改变。 – MJM
你可以发布一个完整的堆栈跟踪?这可能是因为你有太多打开的连接,因为你不知何故泄漏连接(不太可能与Hibernate),或者它可能是你突然因为某些其他原因访问数据库(或许真的是将其关闭) – Pace