zoukankan      html  css  js  c++  java
  • [20140504] ADO.NET客户端超时

    背景:
         最近总是出现客户端超时,那么根据超时进行排查
         System.Data.SqlClient.SqlException (0x80131904): Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
    原理:
         客户端组件超时,一般分为Connection TimeOut 和Command Timeout
         超时主要有以下几方面:
         1.从连接池获取一个连接超时
         2.创建一个新的连接超时
         3.发送一个命令(Command)到数据库超时
         4.使用带有context connection=true的属性连接发送命令(Command)到数据库超时。
         5.当不是显示的发送命令(implicitly)到数据库超时。
         6.执行异步命令时超时
         7.从服务端获取记录时超时
         8.使用bulk copy时超时。
         上面8个,最有前面2个是属于 Connection Timeout,其他都是Command Timeout
    分析:
         从错误来看就是Command Timeout报出的错误,客户端的Command Timeout生成环境下的设置时默认的也就是30秒。
         在数据库监控层,我们设置了XEVENT对超过10s的查询监控,还有手写的堵塞超过10s的监控,中间并没有发现有堵塞情况。
         那么可以排除掉6,在执行命令时超时。
         并且不使用context connection=true那么可以排除掉4,带有context connection=true属性发送Command命令。
         也不会使用bulk copy,所以第8点也可以排除。
         通过sys.dm_os_ring_buffers也没有发现sql server主动断开连接。
    结论:
       那么可以认为是客户端在获取结果或者发送命令的时候,发生的超时。
     
    参考:
    SQL Server 2012实施与管理实战指南》 第4章,第6章
  • 相关阅读:
    [BZOJ 2457] 双端队列 (思维)
    字符串划分 [Bitset 字符串Dp]
    POJ2947 Widget Factory [高斯消元]
    数字串 [分治+哈希+扩展KMP]
    POJ3590 The shuffle Problem [置换+dp]
    P1970 花匠 [权值线段树优化dp, NOIp2003, Y]
    UVA306 Cipher[循环节]
    POJ3270 Cow Sorting [置换]
    POJ 3128 Leonardo's Notebook[置换群幂相关]
    VMware 11 设置U盘启动,总是找不到physicalDrive1
  • 原文地址:https://www.cnblogs.com/Amaranthus/p/3706085.html
Copyright © 2011-2022 走看看