程序在访问有镜像的数据库和无镜像的数据库时,采用的链接超时时间算法不一样,因此会导致在在有镜像的数据库上设置了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

最新文章

  1. SharePoint 2013管理中心里【管理服务器上的服务】不见了
  2. 搭建LNAMP环境(二)- 源码安装Nginx1.10
  3. 【完全开源】Django多人博客系统——支持MarkDown和tinyMce
  4. 1.bootstrap练习笔记-导航条
  5. Unity_Shader(1)
  6. 第6章 第一个Linux驱动程序:统计单词个数
  7. centos分区
  8. CURLcode curl_easy_setopt(原创)
  9. node(thrift)
  10. c# 基础部分 (基本数据类型-- 表达式)
  11. Unity 3D 中自动寻路 和 跟随转向 探析
  12. SQL多条件查询
  13. Mac Android签名生成keystore
  14. Calculate drive total/free/available space
  15. JS实现图片翻书效果示例代码
  16. Cocos2d-x 3.0 实例学习教程 前沿
  17. 关于WIN32.EXE变态木马下载器的解决办法
  18. 鉴客 C# 抓取页面(带认证)
  19. Swing-JTable检测单元格数据变更事件
  20. __call PHP伪重载方法

热门文章

  1. Asp.net 程序优化js,css合并与压缩
  2. stylus入门使用方法
  3. 如何使用CodeSmith批量生成代码(原创系列教程)
  4. hdu 5038 水题 可是题意坑
  5. 分布式消息队列RocketMQ与Kafka架构上的巨大差异之1 -- 为什么RocketMQ要去除ZK依赖?
  6. linux下安装pip以及导入第三方包
  7. [转载]Linux I/O 调度方法
  8. 拼图的几个网上找到的Demo
  9. Android英文文档翻译系列(4)——PopupWindow
  10. (转)从程序员到CTO