SQL拒绝负载测试中的连接

Sha*_*ica 4 c# sql-server tcp load-testing sql-server-2016

我在我的系统上运行负载测试.在某个加载级别,我开始在日志中收到SQL错误:

System.Data.SqlClient.SqlException(0x80131904):建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供者:命名管道Prprovidererror:40 - 无法连接到SQL Server)---> System.ComponentModel.Win32Exception(0x80004005):找不到网络路径

通过在有问题的SQL服务器上运行性能监视器,我发现了以下内容:

  • CPU级别很少超过50%.(在上一次迭代中,我看到它最大值为100%,因此我增加了VM的规格,这有助于将问题推向更高的负载水平.)
  • 用户连接数超过8,000.Sql Server的默认设置为32,767个最大连接数.
  • 连接字符串指定每个数据库的最大池大小为1000个连接,并且服务器上有100个数据库.负载测试在100个数据库之间随机分布,因此应该有相当均匀的分布,这意味着每个数据库大约有80个连接.没有接近1k的限制.

还有哪些因素可能会导致Sql Server无法接受连接?

更新:额外信息:我正在使用Entity Framework Core(EF7)进行数据库连接,如果有帮助的话.

Dav*_*ash 7

"找不到网络路径"似乎不是与SQL Server容量相关的错误.作为一名前"IT专家",我怀疑防火墙正在丢弃你的数据包.如果这是在压力测试期间,防火墙可能会将大量请求解释为拒绝服务攻击,并使用某种预定义规则来删除指定时间段内的连接.

你的网络环境是什么?如果你有一个具有IPS功能的硬件防火墙或路由器,我会检查这些日志,看看你是否找到了一支冒烟的枪.您可能必须创建一个特殊规则,以允许无限制的流量到您的SQL Server.