c# - SQL 在负载测试中拒绝连接

标签 c# sql-server tcp load-testing sql-server-2016

我正在我的系统上运行负载测试。在一定程度的负载下,我的日志中开始出现 SQL 错误:

System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Prprovidererror: 40 - Could not operrorconnection to SQL Server) ---> System.ComponentModel.Win32Exception (0x80004005): The network path was not found

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

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

还有哪些其他因素可能导致 Sql Server 停止接受连接?

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

最佳答案

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

您的网络环境如何?如果您有硬件防火墙或具有 IPS 功能的路由器,我会检查这些日志以查看您是否找到确凿证据。您可能必须创建一个特殊规则以允许无限制地访问您的 SQL Server。

关于c# - SQL 在负载测试中拒绝连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41487778/

相关文章:

c# - WPF DataBinding 未使用 INotifyPropertyChanged 进行更新

c# - 为什么当起始索引可以被要转换的类型的大小整除时 BitConverter 使用的快捷方式起作用?

sql-server - 使用 T-SQL 从 SQL Server 提取二进制数据

sql-server-2008 - 自动启用命名管道和 TCP/IP 协议(protocol) SQL Server 2008 R2

c# - C# 8 是否支持 .NET Framework?

c# - 如何在设计器模式下调整 Windows 窗体应用程序的大小? (Visual Studio 2013 中的 C#)

c# - 有人试图侵入我的网站

sql - 在不使用 ORDER BY 子句的情况下以相同的顺序获取记录

java - TCP连接建立

java - AIX 环境 - TCP 端口 RecvQ 数据增加但应用程序不消耗