关于用JDBC连接数据库服务器,非活动超时的问题,请教高手

麻烦问下各位高手,我用JDBC和AS400上DB2进行连接,但是一般过30分钟左右,400就自动把连接给断了,必须重新连接一下才行,哪位大侠知道这个是什么原因?多谢了这30分钟,我没有做任何操作!我问了一下AS400的大侠们,他们说数据库都有非活动超时的时间设置,需要在应用服务器上设置一个定时...显示全部
麻烦问下各位高手,我用JDBC和AS400上DB2进行连接,但是一般过30分钟左右,400就自动把连接给断了,必须重新连接一下才行,哪位大侠知道这个是什么原因?多谢了
这30分钟,我没有做任何操作!
我问了一下AS400的大侠们,他们说数据库都有非活动超时的时间设置,需要在应用服务器上设置一个定时发送虚语句的参数,请教各位高手,在什么地方设置这个参数啊?
还有从现象上看,貌似和服务器关系不是很大,因为,我用同一个JDBC的驱动连不同的AS400的db2数据库,其中一个有这个问题,一个就没有收起
参与8

查看其它 5 个回答Unmi的回答

有几个方面会造成连接不用时被断开

1. 数据库设置在用户会话空闲时间超过一,会断开连接
2. 操作系统可能也会监测非活动的连接,超过某个时值断掉
3. 连接经过了路由器等网络设备,设备监测到非活动连接超过某个时值断掉

通常在 ftp、telnet 或 ssh 连接可以定期发送空操作 nop,以使服务器不会断开连接。而对于数据库连接池也是因连接池的实现不同而有不同的解决办法。

你可以在连接池实现中定期执行一个最不耗资源的数据库操作,相当于 nop 空操作。比如 C3P0 连接池可以这样配置:


60

这是我们原来对付路由器的限制用的办法

在 was 中,你可以把连接池的 “时效超时” 属性设置的比 30 分钟小点,使连接池中的连接在服务器杀它这前主动断开,这样肯定是会影响到连接池的性能,更为频繁的获取连接。

实际中你应该找到是在哪一层对空闲连接的超时限制,比如 AS400 上的限制,或DB2  的会话空闲时长设置,然后改长到一个更为合适的时间。
2009-06-04
浏览1086

回答者

Unmi 最近回答过的问题

回答状态

  • 发布时间:2009-06-04
  • 关注会员:1 人
  • 回答浏览:1086
  • X社区推广