【问题标题】:Why is connecting to SQL Server very slow?为什么连接到 SQL Server 很慢?
【发布时间】:2019-09-07 19:11:57
【问题描述】:

我们看到创建新连接大约需要 250 毫秒,这比预期的要慢得多。

从我们的应用服务器到 SQL Server,我们有大约 1 毫秒的 ping 时间,并且我们在非常快的 LAN 中运行。

我们的连接字符串是:

Data Source=SQLServer;Initial Catalog=Database;Integrated Security=True

我已经测量了这个简单语句所用的时间

var conn = new SqlConnection(_connectionString);

if (conn.State == ConnectionState.Closed)
{
    var sw = Stopwatch.StartNew();
    await conn.OpenAsync().ConfigureAwait(false);
    sw.StopAndLogIfDelay(20, _log, "Open SQL Server connection");
}

我不希望在快速 LAN 中连接 250 毫秒。有没有人对问题出在哪里有想法或经验?

【问题讨论】:

  • 连接是相当昂贵的资源,这就是为什么它们通常被池化。处理该连接然后再获得另一个连接需要多长时间?
  • 您正在查看驱动程序和 Windows 计时器。它不仅仅是一个 TCP 连接。什么是同步而不是异步的时间?
  • 可以考虑连接池实现。
  • 请注意,您使用的是 Windows 身份验证,因此身份验证过程中涉及 DC。由于其他 cmets 中提到的默认连接池,我预计后续连接会更快。
  • @jdweng 同步连接时间与异步(带等待)大致相同

标签: c# sql-server connection


【解决方案1】:

在 sql-server 连接池中将最小连接数设置为 50 解决了即时问题。

剩下的就是调查为什么在我们的组织中打开 db-connections 需要这么长时间。我将与我们的网络团队合作,看看我们能否找到问题所在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多