SQL 超时故障排除

Posted

技术标签:

【中文标题】SQL 超时故障排除【英文标题】:Troubleshooting SQL Timeout Expired 【发布时间】:2021-01-15 01:07:48 【问题描述】:

我的 C# 应用程序目前正在抛出许多以下异常:

超时。在完成之前超时时间已过 操作或服务器没有响应。发生此故障 在尝试连接到路由目的地时。

我正在使用 linq 查询和 NHibernate。

我很难解决这个问题,因为每次运行查询时都不会发生异常。如果我接受查询并直接在 SSMS 上运行它,它似乎运行得非常快。

只有在针对数据库中的一个表运行时才会出现超时异常。

我知道我可以增加查询超时,但我想解决问题的根本原因。我在解决这些问题方面的知识有限,那么接下来我需要采取哪些步骤来确定问题是什么?

【问题讨论】:

如果是 MS SQL Server,你可以让它在一段时间内运行一个监视器,它会分析查询并提出改进建议。但首先,我会记录所使用的确切请求参数,这样您就可以分析这些参数并可能找到一个模式。 SSMS 总是比 SQLClient 运行得快。 SQLClient 类在向/从 c# 发送数据时必须打包/解包数据。错误消息似乎是连接问题,而不是命令超时。发生错误需要多长时间?什么是连接字符串?如果它只发生在一个表上,则表凭据可能不允许您访问。 【参考方案1】:

增加连接字符串的“连接超时”。 60 是个好数字。

【讨论】:

以上是关于SQL 超时故障排除的主要内容,如果未能解决你的问题,请参考以下文章

解决Azure Web App 500内部服务器错误超时问题并对其进行故障排除

九阳豆浆机故障分析及排除

Linux 网络故障排除命令

批量SQL插入故障排除

Nginx + Gunicorn + Django Stack 上的站点缓慢故障排除

SQL Server 2012内部原理及故障排除(专栏)