Mirror--程序访问镜像数据库的超时机制
2014-01-15 23:09
260 查看
程序在访问有镜像的数据库和无镜像的数据库时,采用的链接超时时间算法不一样,因此会导致在在有镜像的数据库上设置了15 S的超时时间,而实际的超时时间仅为3.6 S,从而导致有镜像的数据库更容易超时。
在无镜像的数据库上,会使用配置的或默认的connect timeout.
在有镜像的数据库上,连接超时时间为:
RetryTime = PreviousRetryTime + ( 0.08 * TotalLoginTimeout )
假定你指定connection timeout 15 秒:
第一轮:连接主机,超时时间为总timeout的8% 即:15*8%=1.2秒 这时候如果连接没有成功,就试图连接备机,超时时间也是1.2秒。
第二轮:如果连接备机失败,这时候,客户端数据库接口再试图连接主机,超时时间设为 总timeout的16% 即:15*16%=2.4秒。 如果没有成功,就连接备机,超时时间也是2.4秒。
第三轮,超时时间是总timeout时间的24%。在后续的每轮中,连接尝试的重试时间会逐渐变大。前八次连接尝试的重试时间如下: 8%, 8%, 16%, 16%, 24%, 24%, 32%, 32%
对于15秒的timeout值,实际连接主机的最大timeout值是3.6秒! 如果前面3次连接(1.2秒,2.4秒,3.6秒)都不成功,那么15秒超时时间就到了,你程序就会报超时错误。要增加连接主机的真实timeout值,你只能增加总的connection timeout值。比如如果超时设为120秒,那么第一轮的重试时间是:120*8%=9.6秒。 即便如此,第一轮的尝试连接时间还是比非镜像数据库的缺省15秒timeout时间要短。
摘抄自http://blogs.msdn.com/b/apgcdsd/archive/2012/03/01/timeout.aspx
在无镜像的数据库上,会使用配置的或默认的connect timeout.
在有镜像的数据库上,连接超时时间为:
RetryTime = PreviousRetryTime + ( 0.08 * TotalLoginTimeout )
假定你指定connection timeout 15 秒:
第一轮:连接主机,超时时间为总timeout的8% 即:15*8%=1.2秒 这时候如果连接没有成功,就试图连接备机,超时时间也是1.2秒。
第二轮:如果连接备机失败,这时候,客户端数据库接口再试图连接主机,超时时间设为 总timeout的16% 即:15*16%=2.4秒。 如果没有成功,就连接备机,超时时间也是2.4秒。
第三轮,超时时间是总timeout时间的24%。在后续的每轮中,连接尝试的重试时间会逐渐变大。前八次连接尝试的重试时间如下: 8%, 8%, 16%, 16%, 24%, 24%, 32%, 32%
对于15秒的timeout值,实际连接主机的最大timeout值是3.6秒! 如果前面3次连接(1.2秒,2.4秒,3.6秒)都不成功,那么15秒超时时间就到了,你程序就会报超时错误。要增加连接主机的真实timeout值,你只能增加总的connection timeout值。比如如果超时设为120秒,那么第一轮的重试时间是:120*8%=9.6秒。 即便如此,第一轮的尝试连接时间还是比非镜像数据库的缺省15秒timeout时间要短。
摘抄自http://blogs.msdn.com/b/apgcdsd/archive/2012/03/01/timeout.aspx
相关文章推荐
- Sqlserver 2005 配置 数据库镜像:数据库镜像期间可能出现的故障:镜像超时机制
- 当您试图配置 Microsoft Access 2010 数据库用户数据源: 错误消息"Microsoft 访问驱动程序 (*.mdb、 *.accdb) ODBC 驱动程序的安装程序例程未找到。
- 局域网内sqlplus 访问主机数据库 TNS: 无监听程序
- Qt MSQL数据库访问测试程序
- 1:ODBC连接数据库的流程 2:访问数据库的基本流程3:使用ReseltSet 的基本流程 javac程序连接数据库源代码
- plsql远程访问数据库 解决ora-12541:TNS:无监听程序
- 遇到问题---web程序访问MongoDB首次超时错误刷新后恢复---Nginx连接时间问题
- 用程序(asp,asp.net等任何可以访问数据库的语言)来自动建立FTP帐号(serv-u的odbc设置)
- 局域网内访问主机数据库出现TNS: 无监听程序的解决办法
- [转]开源数据库MySQL源代码及安装程序镜像站点
- 解决数据库被其他程序访问,无法获取独占访问权问题
- HttpClient超时机制(安全问题处理:访问超大文件控制)
- 使用JDBC创建数据库访问程序
- 在Java程序中,通过JDBC访问数据库
- 访问数据库程序的一般步骤
- 使用ODP.Net 可以实现.Net 程序以SYSDBA 身份访问数据库
- 在 Mac OS X 上创建的 .NET 命令行程序访问数据库 (使用Entity Framework 7 )
- plsql远程访问数据库 解决ora-12541:TNS:无监听程序
- 使用JDBC创建数据库访问程序