应用长时间未调用后再次调用出现hang的情况

简介:         之前某应用就存在长时间不调用,再次调用时处于hang,等待10分钟返回3113的连接错误。今天正好同事也问了个相同的问题,也是应用长时间不调用就出现这种情况。

        之前某应用就存在长时间不调用,再次调用时处于hang,等待10分钟返回3113的连接错误。今天正好同事也问了个相同的问题,也是应用长时间不调用就出现这种情况。

        以前对于这种问题进行过排查,但一直未解决,针对今天的这个系统的问题,还是按照老方法检查,

1. 检查应用日志,确实长时间等待后报3113的错误。

2. 检查数据库的PROFILE中idle_time参数,此处设置的是DEFAULT的UNLIMITED,说明超时不会是由数据库用户PROFILE配置导致的。

3. 检查网络环境,因为这个应用是从一个网段访问另一个网段的数据库,咨询网络中心后,中间有一个防火墙,确实也有超时的设置,是40分钟,也就是应用连接空闲40分钟后,就会自动kill连接。

        问题找到了,为了解决这个问题,其实方法也有很多:

1. 写个脚本定时调这个应用,保证40分钟内有调用,就不会出现超时的问题了。

2. 通过Oracle的一些机制自动探测数据库连接来间接保证40分钟内应用有调用。

这篇文章介绍的DCD就是一种比较不错的方法:http://sundog315.itpub.net/post/308/530331

另外老熊也有一篇非常好的文章推荐:http://www.laoxiong.net/oracle_and_firewall.html。

都是值得反复玩味体会的。

目录
相关文章
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
2509 0
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
|
11月前
ErrGroup-有错误返回的Goroutine控制
ErrGroup-有错误返回的Goroutine控制
40 0
|
Python
Python多线程下调用win32com包相关问题:pywintypes.com_error: (-2147221008, ‘尚未调用 CoInitialize。‘, None, None)问题处理
Python多线程下调用win32com包相关问题:pywintypes.com_error: (-2147221008, ‘尚未调用 CoInitialize。‘, None, None)问题处理
829 0
|
Go
Go channel被关闭时的广播机制,以及遍历未关闭channel时会导致死锁阻塞问题
Go channel被关闭时的广播机制,以及遍历未关闭channel时会导致死锁阻塞问题
128 0
|
Python
C调用Python的崩溃
C调用Python的崩溃
72 0
|
物联网 Linux 开发者
线程被取消的时候执行清理函数|学习笔记
快速学习线程被取消的时候执行清理函数
82 0
线程被取消的时候执行清理函数|学习笔记
|
物联网 Linux 开发者
注册线程清理函数|学习笔记
快速学习注册线程清理函数
85 0
datagruad 日常状态检查
datagruad 日常状态检查
184 0
|
Java Spring
异步调用为什么要复制线程上下文信息?
异步调用为什么要复制线程上下文信息?
164 0
异步调用为什么要复制线程上下文信息?
|
SQL Windows
在执行xp_cmdshell的过程中出错,调用'LogonUserW'失败,错误代码:'1909'
在上篇文章Could not obtain information about Windows NT group/user 'xxxx\xxxx', error code 0x5里面,我介绍了SQL Server服务启动账号域账号锁定的情况下,有些Job Owner为域账号的作业执行会报错...
1302 0