应用长时间未调用后再次调用出现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。

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

目录
相关文章
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
2722 0
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
|
3月前
|
安全 Java
|
5月前
|
Linux API
Linux线程总结---线程的创建、退出、取消、回收、分离属性
Linux线程总结---线程的创建、退出、取消、回收、分离属性
|
6月前
|
JSON 前端开发 算法
2715. 执行可取消的延迟函数
2715. 执行可取消的延迟函数
41 0
|
Serverless 容器
每个请求通常会触发一个新的函数实例来处理。
每个请求通常会触发一个新的函数实例来处理。
73 2
|
Serverless 容器
每个请求通常会触发一个新的函数实例来处理
每个请求通常会触发一个新的函数实例来处理
77 1
|
安全 Java API
为什么启动线程不直接调用run(),而要调用start(),如果调用两次start()方法会有什么后果
1位工作6年的小伙伴去某里P6一面,被问到这样一道面试题,说,为什么启动一个线程不直接调用run()方法,而要调用start()方法来启动,如果调用两次start()会有什么后果?
113 0
|
Python
Python多线程下调用win32com包相关问题:pywintypes.com_error: (-2147221008, ‘尚未调用 CoInitialize。‘, None, None)问题处理
Python多线程下调用win32com包相关问题:pywintypes.com_error: (-2147221008, ‘尚未调用 CoInitialize。‘, None, None)问题处理
1100 0
|
Go
Go channel被关闭时的广播机制,以及遍历未关闭channel时会导致死锁阻塞问题
Go channel被关闭时的广播机制,以及遍历未关闭channel时会导致死锁阻塞问题
172 0
|
物联网 Linux 开发者
线程被取消的时候执行清理函数|学习笔记
快速学习线程被取消的时候执行清理函数
线程被取消的时候执行清理函数|学习笔记