最近在做线上oracle11g thin链接升级的时候,搞出一个线上故障,原因是增加的oracle.jdbc.ReadTimeout参数设置有问题。
系统中一个以前配置了以下几个参数:
1.blocking-timeout-millis 500ms
2.query-timeout 180s
3.idle-timeout-minutes 30m
升级后增加了2个参数:
1.oracle.jdbc.ReadTimeout 60000ms
2.oracle.net.CONNECT_TIMEOUT 10000ms
先来解释下这几个参数的作用:
blocking-timeout-millis :是应用获取数据库链接的等待时间。一般数据库链接都是一个池子,当链接数已经达到了最大链接数的时候,应用如果还要获取链接就会出现等待的现象,等待链接释放并回到链接池,如果等待的时间过长就应该踢掉这个等待,不然应用很可能出现雪崩现象。而这个blocking-timeout-millis就是控制这个等待时间的。
query-timeout:是一个sql执行的时间,如果该sql执行的时间超过它配置的时间就会出现ora01013,用户取消请求操作的异常。
idle-timeout-minutes:是一个数据库链接在多久没有被使用彻底销毁的时间。如果对于资源的要求不是那么高的话,一般配置30m就行了。配置久一点无非是没有使用的链接占用一点内存而已。
oracle.jdbc.ReadTimeout 这个参数实际上是从socket读取数据的时间,总体上说这个时间应该包含了query-timeout的时间。如果这个时间配置得比query-timeout短的话就会出现query-timeout的设置值无效,变为更短的oracle.jdbc.ReadTimeout的值。我搞出的故障也是这个值设得太短导致。
oracle.net.CONNECT_TIMEOUT 是应用去获取数据库链接的时候,发现还没有达到最大链接数,还需要重新创建链接的创建时间。这个时间一般10s也足够了,如果10s还没有创建好链接,该请求尽早的滚蛋也好,免得应用僵死。
更多更详细的请参考:
http://www.admin10000.com/document/1360.html
。
最近在做线上oracle11g thin链接升级的时候,搞出一个线上故障,原因是增加的oracle.jdbc.ReadTimeout参数设置有问题。 系统中一个以前配置了以下几个参数: 1.blocking-timeout-millis 500ms 2.query-timeout 180s 3.idle-timeout...
数据库的Timeout 其实有很多种情况。
一个是执行的
超时
时间 executionTimeOut,一个是连
接
的
超时
时间connectionTimeOut,
还有呢? 等待的
超时
时间 ReadTimeout。不过很多数据库情况下connectionTimeOut 就是ReadTimeout
props.put("user", userName); props.p...
在工作中,出现使用Druid链
接
Postgresql数据库,当第一次动态链
接
数据库源或者连过长时间不使用数据库时,出现链
接
过程缓慢,甚至hold的情况,链
接
时间以分计算,导致前端
接
口响应缓慢,影响用户操作问题。
经过日志的排查,发现是在DruidDataSource对象链
接
数据源过程中卡主了,并不是执行SQL语句查询慢的原因,通过网上查询资料,从一下几方面进行改进...
因为近期的项目用到了
Oracle
数据库,所以自己就学着安装了一下,属于菜鸟级别经常遇到的问题,大神可以自觉离开。。
1、开始的时候在项目中启动项目,报错,显示连
接
Oracle
数据库出错,于是用客户端尝试连
接
Oracle
数据库,果然连
接
不上;
报错 ORA-12170连
接
超时
,网上百度了各种教程,普遍说法是:
一tns的配置文件不对
二服务器的防火墙开了
三路由的配置问题
原文:http://www.cubrid.org/blog/dev-platform/understanding-jdbc-internals-and-timeout-configuration/
恰当的JDBC
超时
设置
能够有效地减少服务失效的时间。本文将对数据库的各种
超时
设置
及其
设置
方法做介绍。
真实案例:应用服务器在遭到DDos攻击后无法响应
在遭到DDos攻击后,整个服务都垮掉了。由于第四层交换机不堪重负,网络变得无法连
接
,从而导致业务系统也无法正常运转。安全组很快屏蔽了所有的DDos攻击,并恢
<property name="connectionProperties" value="
oracle
.net.CONNECT_TIMEOUT=2000;
oracle
.jdbc.ReadTimeout=20000;loginTimeout=2000;socketTimeout=20000" />
原连
接
: http://www.importnew.com/2466.html
java生产级别的
接
入程序卡死是正常的,基本重启就可以解决问题,但是重启之后还是会卡死,所以要排查原因,找到源头。
基本的思路就是查看代码堆栈,是否是线程死锁、遇到阻塞队列、或者线程池线程因为内存不足退出等。
基本使用的工具包括jstack...
transaction timeout
设置
的是一个事务的执行时间,里头可能包含多个statement
statement timeout(也相当于result set fetch timeout)
设置
的是一个stateme...
ConnectTimeout
指的是建立连
接
所用的时间,适用于网络状况正常的情况下,两端连
接
所用的时间。
在java中,网络状况正常的情况下,例如使用HttpClient或者HttpURLConnetion连
接
时
设置
参数
connectTimeout=5000即5秒,如果连
接
用时超过5秒就是抛出java.net.SocketException: connetct time out的异常。
ReadTimeout
指的是建立连
接
后从服务器读取到可用资源所用的时间。
在这里我们可以这样理解Read