如何调查 ASP.net 应用程序上的 SQL Server 超时错误?

Posted

技术标签:

【中文标题】如何调查 ASP.net 应用程序上的 SQL Server 超时错误?【英文标题】:How to investigate SQL Server Timeout Error on ASP.net application? 【发布时间】:2012-05-12 18:08:36 【问题描述】:

我们在 NopCommerce - ASP.net MVC3 Web 应用程序上遇到服务器超时错误。

当我们结束 sql 进程时,错误会重新出现。结束时,它开始正常工作一段时间,然后又开始发生。

仅在最近几天才发生这种情况,在此之前它运行良好。请注意,其代码没有进行重大更新。

我们不知道可能是什么问题以及如何调查和解决它?是连接池相关问题还是什么?

这是堆栈跟踪:

超时。在操作完成之前超时时间已过或服务器没有响应。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:超时已过期。在操作完成之前超时时间已过或服务器没有响应。

来源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[SqlException (0x80131904): 超时。在操作完成之前超时时间已过或服务器没有响应。] System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔 breakConnection)+296 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +415 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2657 System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +88 System.Data.SqlClient.SqlDataReader.get_MetaData() +114 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +505 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔返回流,布尔异步)+1896 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +480 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String 方法) +28 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior 行为,字符串方法)+854 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior 行为)+22 System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator 翻译器,EntityConnection 连接,Dictionary2 identifierValues, List1 generatedValues)+269 System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter 适配器) +528

【问题讨论】:

【参考方案1】:

@Dharmik Bhandari,可能有几个问题。尝试以下方法

增加池大小 设置 CommandTimeOut = 0(无限) 设置 ConnectionTimeOut = 0(无限) 数据库功能结束后立即释放连接资源

【讨论】:

以上是关于如何调查 ASP.net 应用程序上的 SQL Server 超时错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用jQuery unobtrusive和Asp.Net Mvc验证动态生成的单选按钮组?

asp.net和winform程序上的区别都有哪些?

如何使用 jquery unobtrusive 和 Asp.Net Mvc 验证动态生成的单选按钮组?

如何重定向到 $.AJAX 上的视图完成 - asp.net mvc 3

什么是:B/S体系结构、ASP.NET程序和SQL SERVER数据库开发?

ASP.NET 开发者 开始学习ASP.NET Core 2吧