【问题标题】:Random delays on opening connection to SQL Server打开与 SQL Server 的连接时出现随机延迟
【发布时间】:2018-03-09 05:47:22
【问题描述】:

在我们的一个系统中,我们在打开与 SQL Server 的连接时遇到随机延迟。

系统运行 Windows Server 2012 R2 Standard 和 SQL Server 2012,与我们的应用程序位于同一台物理机器上。

即使我们的应用程序处于空闲状态,它也会平均每隔几秒执行一次数据库操作。

我们的应用程序执行的数据库操作通常包括 3 个步骤:

  • 打开与 SQL 服务器的连接
  • 运行存储过程
  • 关闭连接

通常第一步只需要几分之一秒,而运行存储过程可能需要更长的时间,具体取决于许多因素。

问题:打开连接可能随机需要 5-13 秒。这种情况很少发生,几小时一次,甚至一天一次。

换句话说,这可能每几千次数据库操作就会发生一次。在这些延迟的时间安排中,我们没有发现任何可辨别的模式。

SQL Server 日志文件中没有任何可疑之处。

运行 SQL Server 分析器似乎不切实际,因为故障可能在 10 到 20 小时内不会出现。

我们在任何其他机器上都没有看到这种现象。

【问题讨论】:

  • 您可以检查 Windows 事件日志中是否存在任何可疑的错误或警告
  • 您是否使用名称服务器连接到您的数据库?这可能是 NS 解析延迟(DNS 客户端或服务器问题)。您可以考虑的其他事情是服务器安全性,例如如果您使用 SSL。您的证书是最新的吗?
  • @Surjit:Windows 事件日志中没有任何可疑之处。
  • @B3S:我们正在为数据库服务器使用明确的 IP 地址。我们没有使用 SSL。
  • 由于问题并不总是可重现的,我猜您将面临一项艰巨的工作。如果未启用,您可以尝试另一个步骤,在 SQL Server Management Studio 中,打开 SQL Server 属性 > 安全 > 登录审核,选择“登录失败和成功登录”。更多,你的 sql server 是否使用默认端口(1433)?该端口是否已在您的防火墙中过滤?

标签: sql sql-server-2012 connection


【解决方案1】:

看起来我们已经解决了这个问题。我在某处读到了尝试使用 SQL Server 身份验证而不是 Windows 身份验证的建议。那里讨论的问题与我们的问题不完全相同,但有些相似。由于每次打开连接操作都使用连接字符串,我决定试一试。结果,到目前为止,我们的应用程序已经连续运行了 3 天,并且没有发生过一次打开连接变慢的事件。将这一点放在上下文中,在此修复之前,我们平均在 24 小时内发生了几起事件,而在过去的两个月中,没有一个 24 小时内没有事件发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多