zoukankan      html  css  js  c++  java
  • 转载:有关SQL server connection Keep Alive 的FAQ(2)

     转: http://blogs.msdn.com/b/apgcdsd/archive/2012/05/18/sql-server-connection-keep-alive-faq-2.aspx

    在下面这篇文章里面介绍了有关keepalive的一些FAQ:

    http://blogs.msdn.com/b/apgcdsd/archive/2011/05/03/sql-server-connection-keepalive-faq.aspx

       

    这篇文章再进一步讨论有关Keep Alive的几个问题.

       

    1Keep Alive机制,是否只和特定的provider有关,比如SQL native client, odbc, oledb, ADO等等?

    []和连接使用的上层应用(ADO,SQL client, ODBC etc) 无关。和TCP协议和Named Pipe 有关。

       

    2Blog上有一句提到"如果该连接空闲时间(没有任何数据交互)超过keepalivetime",这里面说的数据,是指网络包还是实实在在的数据库里面的数据?

    [] 是网络层面上的package,但不包括keepalive

       

    3、以上讲的Keep Alive均指server端的,客户端的Keep Alive能否设置,如何设置,如何知道客户端设置了,如果客户端设置了,以server的为准还是client的为准?

    []客户端设置参考如图。

       

    红色框框里面的是针对客户端程序使用native client的设置值。

    服务器端的Keep Alive 控制SQL server进程的Keep Alive值。客户端的设置控制客户端程序的Keep Alive值。他们相互不干扰。比方说,客户端建立TCP 连接到SQL server,这个时候客户端和服务器的keep alive都会起作用。它们各自发送自己进程的keepalive包。谁的keepalive值小谁就先发出keepalive 包。比如说,如果客户端设置30秒,那么客户端在条件满足时每隔30秒就会发一个keepalive,而服务器的keepalive10秒,那么服务器会在条件满足时每隔10秒发个keepalive包。客户端TCP通过keepalive包监控connection情况,如果它发现connection有问题,就会关闭连接。服务器端也一样的。

       

    4假设应用远程连接至数据库做update操作,一直不commit,在未返回前模拟数据库端对应用网卡disabled. 我在服务器上设置服务器的TCP keepalive15秒。这时候35~40秒我的程序收到报错。为什么不是我设置的15秒而是40秒? 

    []服务器的Keep Alive只管SQL server进程自己的connections。服务器网卡突然被disable, 那么操作系统会马上获知这个事件,那么这个SQL server 也会马上知道,所以不会等待15秒,而是马上就会把相应connection断开。而这个时候客户端程序因为网卡已经断开,无法收到服务器的关闭连接事件,那么客户端的keepalive会发出,侦测连接的情况。客户端缺省keepalive =30 秒,所以大概35~40秒客户端程序才会检查到连接错误。

    如果是在客户端disable网卡,那么客户端的连接会马上关闭,而服务器端会过15秒才知道connection出问题。

       

    5.在博客中有句话:如果一个应用程序没有显式调用函数设置TCP连接的keepalive属性,那么他的TCP连接默认使用OS TCP配置。OS keep alive配置默认是关闭的。我确实在HKLMSYSTEMCurrentControlSetServicesTcpipParameters找不到任何的keep alive值,而OSkeep alive配置默认是关闭的,关闭表示什么意思?

    [关闭就是disable,就是说没有发送keep alive包这样的行为。那么对于一个连接,只有在真正发送数据的时候才能知道是否可用,而不能事先知道。keepalive包的侦测行为可以更快知道一个连接是否正常。 SQL server SQL native client等部件的keep alive缺省都是打开(enable)的。

       

       

  • 相关阅读:
    SharedPreferences数据、openFileOutput文件、SQLite数据库文件存储位置
    Android Activity 生命周期的透彻理解
    Android中半透明Activity效果另法
    android开发3:四大基本组件的介绍与生命周期
    Activity生命周期的学习以及Logcat的使用
    Android 之 Window、WindowManager 与窗口管理
    Android相关类关系
    android应用开发之Window,View和WindowManager .
    Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析
    Android应用程序窗口(Activity)的窗口对象(Window) 的创建过程分析
  • 原文地址:https://www.cnblogs.com/stswordman/p/3271499.html
Copyright © 2011-2022 走看看