我将Spring Framework 3.2与hibernate 4结合使用,在长时间的空闲时间后在本地服务器(apache-tomcat
v7.0)上发送请求并且数据库位于远程服务器上时,出现上述异常。经过数小时的搜索,我发现问题出在连接池。我尝试了多个连接池,但没有找到令人满意的解决方案。贝娄是我的弹簧数据文件上的当前数据源
<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource"
destroy-method="close">
<property name="connectionCachingEnabled" value="true" />
<property name="URL" value="${app.jdbc.url}" />
<property name="user" value="${app.jdbc.username}" />
<property name="password" value="${app.jdbc.password}" />
<property name="connectionCacheProperties">
<value>
MinLimit:70
MaxLimit:200
InitialLimit:20
ConnectionWaitTimeout:120
InactivityTimeout:180
ValidateConnection:true
</value>
</property>
</bean>
请指教。
当连接池中的连接不再主动连接到数据库时,将出现“无效或陈旧的连接”错误。以下是几种可能导致这种情况的情况
如果要设置InactivityTimeout
,则必须确保它小于IDLE_TIME
数据库强制执行的值。您可以通过IDLE_TIME
以下查询获取
select * from dba_profiles dp, dba_users du
where dp.profile = du.profile and du.username ='YOUR_JDBC_USER_NAME';
使用connectionCacheProperties时,请始终确保将PropertyCheckInterval
属性设置为小于超时的值。默认值为900秒,这意味着高速缓存守护程序线程将仅每15分钟运行一次并强制执行超时。因此,您始终希望将其设置为低于超时属性的值。
我将始终确保使用0作为MinLimit。
稍微重写您的配置文件将使其:
<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close">
<property name="connectionCachingEnabled" value="true" />
<property name="URL" value="${app.jdbc.url}" />
<property name="user" value="${app.jdbc.username}" />
<property name="password" value="${app.jdbc.password}" />
<property name="connectionCacheProperties">
<props merge="default">
<prop key="MinLimit">0</prop>
<prop key="MaxLimit">200</prop>
<prop key="InitialLimit">1</prop>
<prop key="ConnectionWaitTimeout">120</prop>
<prop key="InactivityTimeout">180</prop>
<prop key="ValidateConnection">true</prop>
<prop key="PropertyCheckInterval">150</prop>
</props>
</property>
</bean>
当您尝试验证从池中获得的旧连接时,网络实际上已断开时,您也可能会收到“无效或陈旧的连接错误”。
我在SpringBoot2中使用Hibernate5.3和Hikari2.7,通过官方的JDBC驱动程序使用FileMaker16数据源。 FileMaker服务器性能较差,SQL查询执行时间对于大表可以达到一分钟。有时,当连接池充满从未释放的活动连接时,它会导致连接泄漏。 问题是如何强制挂在池中的活动连接关闭,比如两分钟,将它们闲置并再次使用。 例如,我使用: 在raw中调用几次会导致连接泄漏,
问题内容: 我正在运行centos 6.使用apache处理php和nginx来处理脚本图像和CSS。 我已经安装了memcached服务器。 我还为php安装了模块。 我创建了一个新的php文件 我检查了memcached状态,它正在运行。 我总是收到“无法连接”。 我试图将值从‘127.0.0.1’更改为’localhost’-仍然无法正常工作。 输出量 connect和addServer有什
我使用weblogic应用服务器和oracle数据库。我使用jdbc与oracle数据库通信。我从weblogic数据源获得连接,并向表中插入一条记录。问题是,当我想关闭连接(插入数据库后)时,我会遇到一个异常(连接已经关闭)。这是我的代码: 但是联系。close语句引发异常: 我试图避免连接。close语句(因为我教过连接是自动关闭的!!但过了一段时间,所有的连接都打开了,因此引发了一个异常)
我读到“过时的连接是服务器断开连接但客户端不知道的结果。”但是,我正在尝试发现,如果我使用基于SpringBoot RestTemplate的应用程序(进一步使用Apache的PoolConnectionManager)并从应用程序调用另一个API,这是如何实现的?在本例中,我的应用程序是一个客户端,我调用的应用程序充当服务器。如果我点击了该应用程序,并且我正在调用的api收到了请求,但在完全填充
我只是想澄清这个概念,并能找到足够详细的答案,这些答案可以让我们了解硬件中的一切是如何运作的。请提供任何相关细节。 对于VIPT缓存,内存请求将并行发送到TLB和缓存。 从TLB我们得到了详细的物理地址。从缓存索引中,我们得到一个标签列表(例如,来自属于一个集合的所有缓存行)。 然后将翻译后的TLB地址与标记列表匹配,以找到候选标记。 我的问题是在哪里进行检查? 在缓存中 如果不在缓存中,还有什么
我正在用自动配置的Tomcat池数据源开发基于spring boot的应用程序。我必须在不同的DB模式下调用相同的Oracle存储过程(它们都有执行授权),而且我事先没有指定的用户/密码列表。但在程序调用的时候我知道凭据。我使用dataSource对象的getConnection(user,password)方法来接收连接并且工作良好。但是,如果我一个一个地调用过程三次--对于用户A,用户B,再一