gpt4 book ai didi

asp.net-mvc - 每个请求 DbContext 都会发生随机错误

转载 作者:行者123 更新时间:2023-12-01 21:20:02 26 4
gpt4 key购买 nike

我的 mvc+ef+unity 应用程序在较高负载(每秒 10 个以上请求)下遇到随机错误(每天几个):

  • 连接未关闭/连接的当前状态为连接
  • Count 查询出现死锁(无显式事务)
  • 已添加具有相同键的项目。解析 DbContext 时在 System.Data.Entity.DbContext.SetTEntity
  • 远程主机关闭了连接。错误代码是0x80070057
  • 已经有一个与此命令关联的打开的 DataReader,必须先将其关闭。 - 我打开 MARS 来摆脱这个问题(尽管我相信它应该在没有 MARS 的情况下正常工作,但没有嵌套查询),这可能会导致另一个随机错误:
  • 服务器将断开连接,因为客户端驱动程序在 session 处于单用户模式时发送了多个请求。

我使用this PerRequestLifetimeManager 的实现并尝试了 Unity.Mvc3,没有任何区别。

some hints DbContext 没有被正确处理。我不确定每个请求是否是问题的原因,因为它似乎是 common练习。

最佳答案

经过进一步调查,我发现请求处理线程有时会从其他线程窃取 DbContext,因此 Rashid 的 PerRequestLifetimeManager 实现可能不是线程安全的。我再次转移到Unity.Mvc3,错误消失了,我上次尝试时一定犯了一些错误。

唯一不相关的错误是死锁。它们是由碰撞引起的

SELECT ... FROM X JOIN Y ... JOIN Z ...

BEGIN TRAN
UPDATE Z ...
UPDATE Y ...
COMMIT TRAN

SELECT 锁定了 Y 并想要 Z,TRAN 锁定了 Z 并想要 Y

关于asp.net-mvc - 每个请求 DbContext 都会发生随机错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14894350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com