【发布时间】: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