none
SQL SE RVER 2008 R2做连接数测试时发现,成功连接10-20个左右就会报如下错,恳请高手指点: RRS feed

  • 问题

  • 各位好:

    我在做连接数测试时发现,成功连接10-20个左右就会报如下错,恳请高手指点:

    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)

    测试代码:

    static void Main(string[] args)
    {
    int maxCount = 40000;


    List<SqlConnection> collection = new List<SqlConnection>();
    for (int i = 0; i < maxCount; i++)
    {
    Console.WriteLine(string.Format("成功创建连接对象{0}", i));
    SqlConnection conn = new SqlConnection(getSqlConnectionStr());
    conn.Open();
    collection.Add(conn);

    }
    }

    private static string getSqlConnectionStr()
    {
    return "Data Source = 10.68.XXX.XXX;Initial Catalog = MESWORKS;User Id = sa;Password = tcme;Pooling=true;Min Pool Size=0;Max Pool Size=40000";
    }

    <input id="05eb810e-30f1-4711-8840-7362d24f3238_attachments" type="hidden" />
    2012年9月19日 4:37

答案

全部回复

  • 出问题的时候正在运行的程序还可以正常运行吗?用SSMS在Local可以连接吗? 你的Server Connection是怎么配置的?Unlimited?

    2012年9月19日 8:08
  • 贴出下SQL SERVER LOG,

    胡冰

    2012年9月19日 9:01
  • Tried connect with tcp/ip? Did server have free scheduler when failed to connect? Did you see any connection error around that time in ring buffer?
    2012年9月19日 13:09
  • 你的SQL2008是什么版本,是express版吗?

    给我写信: QQ我:点击这里给我发消息

    2012年9月19日 16:31
  • Edition is not issue.
    2012年9月19日 17:59
  • 这里是怎麽设置的呢?


    给我写信: QQ我:点击这里给我发消息

    2012年9月20日 1:08
  • 并发连接设置成0,允许远程连接,远程查询超时设置为0

    2012年9月20日 14:02
  • 在连接失败的时候,我ping IP 是通的
    2012年9月20日 14:03
  • sql server 2008 R2
    2012年9月20日 14:04
  • 在连接失败的时候,我ping IP 是通的

    Doesn't matter because you use named pipes.
    2012年9月20日 14:06
  • 另外说明一下,我做了SQL SERVER 的群集,在其中一个节点是没有问题的,连接数测试能达到3万多个,切到另一个节点就有我说的这个问题。

    现在怀疑有两种情况

    1,是操作系统的问题

    2,SQL SERVER 2008 R2 本身的问题

    但尚无法确定

    2012年9月20日 14:08
  • 请问你测试客户端跟服务器是在同一个局域网吗?

    SQL Browser服务有没有开启

    也有可能是内存问题,请参考:http://blog.sina.com.cn/s/blog_3f2ef118010008ry.html


    给我写信: QQ我:点击这里给我发消息

    2012年9月20日 16:35
  • 我的服务器额内存是128G的,绝对没有问题!

    2012年9月21日 5:45
  • 贴一下,我的测试结果:

    一、数据库运行在10.68.100.141(群集节点一)

    (1)    并发连接数 已设置为0,即没有限制

    (2)    SQL SERVER的配置信息,供后续分析使用

    name minimum maximum config_value run_value
    access check cache bucket count 0 65536 0 0
    access check cache quota 0 2147483647 0 0
    Ad Hoc Distributed Queries 0 1 0 0
    affinity I/O mask -2147483648 2147483647 0 0
    affinity mask -2147483648 2147483647 0 0
    affinity64 I/O mask -2147483648 2147483647 0 0
    affinity64 mask -2147483648 2147483647 0 0
    Agent XPs 0 1 1 1
    allow updates 0 1 0 0
    awe enabled 0 1 0 0
    backup compression default 0 1 0 0
    blocked process threshold (s) 0 86400 0 0
    c2 audit mode 0 1 0 0
    clr enabled 0 1 0 0
    common criteria compliance enabled 0 1 0 0
    cost threshold for parallelism 0 32767 5 5
    cross db ownership chaining 0 1 0 0
    cursor threshold -1 2147483647 -1 -1
    Database Mail XPs 0 1 0 0
    default full-text language 0 2147483647 2052 2052
    default language 0 9999 30 30
    default trace enabled 0 1 1 1
    disallow results from triggers 0 1 0 0
    EKM provider enabled 0 1 0 0
    filestream access level 0 2 0 0
    fill factor (%) 0 100 0 0
    ft crawl bandwidth (max) 0 32767 100 100
    ft crawl bandwidth (min) 0 32767 0 0
    ft notify bandwidth (max) 0 32767 100 100
    ft notify bandwidth (min) 0 32767 0 0
    index create memory (KB) 704 2147483647 0 0
    in-doubt xact resolution 0 2 0 0
    lightweight pooling 0 1 0 0
    locks 5000 2147483647 0 0
    max degree of parallelism 0 1024 0 0
    max full-text crawl range 0 256 4 4
    max server memory (MB) 16 2147483647 2147483647 2147483647
    max text repl size (B) -1 2147483647 65536 65536
    max worker threads 128 32767 0 0
    media retention 0 365 0 0
    min memory per query (KB) 512 2147483647 1024 1024
    min server memory (MB) 0 2147483647 0 0
    nested triggers 0 1 1 1
    network packet size (B) 512 32767 4096 4096
    Ole Automation Procedures 0 1 0 0
    open objects 0 2147483647 0 0
    optimize for ad hoc workloads 0 1 0 0
    PH timeout (s) 1 3600 60 60
    precompute rank 0 1 0 0
    priority boost 0 1 0 0
    query governor cost limit 0 2147483647 0 0
    query wait (s) -1 2147483647 -1 -1
    recovery interval (min) 0 32767 0 0
    remote access 0 1 1 1
    remote admin connections 0 1 0 0
    remote login timeout (s) 0 2147483647 40 40
    remote proc trans 0 1 0 0
    remote query timeout (s) 0 2147483647 0 0
    Replication XPs 0 1 0 0
    scan for startup procs 0 1 1 1
    server trigger recursion 0 1 1 1
    set working set size 0 1 0 0
    show advanced options 0 1 1 1
    SMO and DMO XPs 0 1 1 1
    SQL Mail XPs 0 1 0 0
    transform noise words 0 1 0 0
    two digit year cutoff 1753 9999 2049 2049
    user connections 0 32767 0 0
    user options 0 32767 0 0
    xp_cmdshell 0 1 1 1

    (3)    客户端测试实际的连接数

    之前有测试过到连接数能达到32712,由于正式环境在使用这次测试到5000仍然是正常的,故就停止测试。如下图:

    连接10-30个就会连接不上,截图如下

    2012年9月21日 5:53
  • 一、数据库运行在10.68.100.142(群集节点二)

    (1)    并发连接数

    (2)    SQL SERVER的配置信息,供后续分析使用

    name minimum maximum config_value run_value
    access check cache bucket count 0 65536 0 0
    access check cache quota 0 2147483647 0 0
    Ad Hoc Distributed Queries 0 1 0 0
    affinity I/O mask -2147483648 2147483647 0 0
    affinity mask -2147483648 2147483647 0 0
    affinity64 I/O mask -2147483648 2147483647 0 0
    affinity64 mask -2147483648 2147483647 0 0
    Agent XPs 0 1 1 1
    allow updates 0 1 0 0
    awe enabled 0 1 0 0
    backup compression default 0 1 0 0
    blocked process threshold (s) 0 86400 0 0
    c2 audit mode 0 1 0 0
    clr enabled 0 1 0 0
    common criteria compliance enabled 0 1 0 0
    cost threshold for parallelism 0 32767 5 5
    cross db ownership chaining 0 1 0 0
    cursor threshold -1 2147483647 -1 -1
    Database Mail XPs 0 1 0 0
    default full-text language 0 2147483647 2052 2052
    default language 0 9999 30 30
    default trace enabled 0 1 1 1
    disallow results from triggers 0 1 0 0
    EKM provider enabled 0 1 0 0
    filestream access level 0 2 0 0
    fill factor (%) 0 100 0 0
    ft crawl bandwidth (max) 0 32767 100 100
    ft crawl bandwidth (min) 0 32767 0 0
    ft notify bandwidth (max) 0 32767 100 100
    ft notify bandwidth (min) 0 32767 0 0
    index create memory (KB) 704 2147483647 0 0
    in-doubt xact resolution 0 2 0 0
    lightweight pooling 0 1 0 0
    locks 5000 2147483647 0 0
    max degree of parallelism 0 1024 0 0
    max full-text crawl range 0 256 4 4
    max server memory (MB) 16 2147483647 2147483647 2147483647
    max text repl size (B) -1 2147483647 65536 65536
    max worker threads 128 32767 0 0
    media retention 0 365 0 0
    min memory per query (KB) 512 2147483647 1024 1024
    min server memory (MB) 0 2147483647 0 0
    nested triggers 0 1 1 1
    network packet size (B) 512 32767 4096 4096
    Ole Automation Procedures 0 1 0 0
    open objects 0 2147483647 0 0
    optimize for ad hoc workloads 0 1 0 0
    PH timeout (s) 1 3600 60 60
    precompute rank 0 1 0 0
    priority boost 0 1 0 0
    query governor cost limit 0 2147483647 0 0
    query wait (s) -1 2147483647 -1 -1
    recovery interval (min) 0 32767 0 0
    remote access 0 1 1 1
    remote admin connections 0 1 0 0
    remote login timeout (s) 0 2147483647 40 40
    remote proc trans 0 1 0 0
    remote query timeout (s) 0 2147483647 0 0
    Replication XPs 0 1 0 0
    scan for startup procs 0 1 1 1
    server trigger recursion 0 1 1 1
    set working set size 0 1 0 0
    show advanced options 0 1 1 1
    SMO and DMO XPs 0 1 1 1
    SQL Mail XPs 0 1 0 0
    transform noise words 0 1 0 0
    two digit year cutoff 1753 9999 2049 2049
    user connections 0 32767 0 0
    user options 0 32767 0 0
    xp_cmdshell 0 1 1 1

          (3)    客户端测试实际的连接数

    连接10-30个就会连接不上,截图如下


    2012年9月21日 5:55
  • 连接数为0不是没有限制,是最大为32767,你使用连接池的方式应该没有问题的啊

    其他大侠应该帮到你


    给我写信: QQ我:点击这里给我发消息

    2012年9月21日 13:41
  • 你确定都是企业版?

    我经常遇到客户错装开发版或评估版的现象。


    想不想时已是想,不如不想都不想。

    2012年9月22日 7:38
    版主
  • 一般性网络错误GNE

    连接不上其中一个原因

    --1、服务器的负荷
    --SQL服务器上的其他进程(服务或应用)正在同时运行,使得整个服务器的
    --CPU使用率达到100%,或者使用了大量的内存资源,进而影响SQL服务的响应速度
    --SQL自己不是很健康,不能及时处理客户端请求,会遇到GNE错误。例如CPU100%了
    --遇到AV ACCESS VIOLATION SQL状态不正常。或者SQL的线程调度不流畅,有大量线程
    --正在做I/O操作不能正常返回,线程切换出现阻碍(17883),线程用尽(17884)等

    --3、网络传输层问题
    --如果两台计算机之间的网络有频繁重传现象,或者特定类型的网络包被某个网络设备
    --(网关、路由、防火墙等)篡改或丢弃,那么GNE就会发生

    --4、Windows操作系统层面问题
    --SQL的连接是由Windows建立和维护的,Windows为了自身安全,有时候会拒绝一些网络
    --请求。如果这种拒绝发生在SQL连接上,就被Windows误杀,GNE产生

    --6、杀软和防火墙
    --当SQL很繁忙的时候会有连接被误杀的现象

    --7、网络设备
    --对于长时间不登出的连接,SQL会每隔30秒
    --做一次keepalive的握手,确认连接是否还有效。如果keepalive的包没有客户端反馈
    --SQL会中断这个连接。当下次客户端要使用连接的时候,会收到GNE错误


    给我写信: QQ我:点击这里给我发消息

    2012年9月22日 14:02
  • --最后一招,在客户端计算机和SQL服务器同时抓取两份包含网络错误时间点的network monitor日志
    --拿到日志,找到问题连接对话的所有网络包,比较是不是所有网络包都已经正确传到了目的地
    --分析连接怎麽被中断,从而找到原因。

    给我写信: QQ我:点击这里给我发消息

    2012年9月22日 14:43
  • 你确定都是企业版?

    我经常遇到客户错装开发版或评估版的现象。


    想不想时已是想,不如不想都不想。


    They have same max connection limit.
    2012年9月22日 18:43
  • --4、Windows操作系统层面问题
    --SQL的连接是由Windows建立和维护的,Windows为了自身安全,有时候会拒绝一些网络
    --请求。如果这种拒绝发生在SQL连接上,就被Windows误杀,GNE产生

    我应该怎样去检查这种情况呢?

    2012年9月24日 6:28
  • Should disable tcp chimney on sql server and client machines, check http://support.microsoft.com/kb/948496. And we found win2k8 still has same issue.
    2012年9月24日 15:18
  • --最佳实践配置SQL服务器以及客户端服务器
    --(1)禁用RSS
    --找到如下注册表键值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\EnableRSS
    --将其设置为0

    --(2)禁用TaskOffload
    --HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\DisableTaskOff
    --将其设置为1

    --(3)禁用TCP Chimney
    --输入命令行 netsh int ip set chimney disabled

    --(4)禁用TCPA
    --HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\EnableTCPA
    --将其设置为0


    --重启机器
    --升级Windows到最新更新版本
    --检查SQL里面的priority boost 和ligthweight pooling是否已禁用


    给我写信: QQ我:点击这里给我发消息

    2012年9月24日 15:49