asp.net - SubmitChanges() 上的 LINQ to Entities 超时

标签 asp.net sql-server database concurrency linq-to-entities

在数据上下文中调用 SubmitChanges() 时,我一直遇到以下异常问题:

“超时已过。操作完成前超时时间已过或服务器未响应。语句已终止。”

这发生在 5-100 个并发用户使用的 ASP.NET Web 应用程序上。请注意,增加站点/数据库的超时时间并没有帮助,并且正在运行的查询非常简单和快速。我什至完全删除了导致网站在发生错误时无限期挂起的超时期限。

这个问题的其他方面:

  • 它是间歇性的,无法可靠地重现
  • 它只会出现在几种不同的方法中,不会出现在任何其他方法中
  • 增加或删除超时期限没有帮助
  • 重新启动服务器并重新启动 MSSQL 数据库没有帮助

这似乎是一个并发/死锁问题,但我不知道如何调试或修复它。有什么想法吗?

最佳答案

当应用程序执行数据库操作并等待 SubmitChanges 的响应时,尝试在 Sqlserver 中运行以下查询

**sp_who2**

查看返回输出中的 Blkby 列。 如果您发现某一行具有某个值(这是阻止您的连接的命令的 SPID)。

检查该列中的 ProgramName 以查找更多信息。

如果您找到所描述的阻塞的 SPID,则运行以下命令以查找对该 SPID 执行的最后一个查询。 假设 Blkby 的值为 59

**dbcc inputbuffer(59)**

这将使查询阻止您的应用程序查询。

这是一种解决问题的方法。

有时由于存储过程中的默认值参数导致参数嗅探而发生超时。

在那种情况下,您可以尝试将该行用作所用程序的第一行

开启阿里莎波特

改变流程,再次尝试数据库操作。

如果可行,您可以在之后删除此行,然后再次更改程序。

如果它适合你,试试这个。

我在这里发现了一个类似的问题

另请阅读有关查询在 Web 应用程序中运行缓慢并在此处立即在 SSMS 中运行缓慢的更多信息

Stored procedure slow when called from web, fast from Management Studio

希望对您有所帮助。

关于asp.net - SubmitChanges() 上的 LINQ to Entities 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11267686/

相关文章:

MySQL:在特定主键处插入新行,或者将所有后续行向下插入?

c# - 我可以在实际的 aspx 中从我的 .NET 代码隐藏页面调用变量吗?

c# - 编辑javascript文件后需要构建吗?

sql - 获取每列的最新值

sql-server - 操作导致超出Core配额限制。允许的最大值 : 4, 当前使用中 : 0, 额外请求:6

sql-server - 如何在 SQL Server 2008 上调试 EXCEPTION_ACCESS_VIOLATION

jquery - MySQL - 连接或插入查询结果

jQuery AJAX 调用数据库工作,但不按顺序

asp.net - asp图表错误

asp.net - ASP.NET MVC数据注释MaxLength验证不起作用