gpt4 book ai didi

.net - 从 .NET 2 切换到 .NET 4 后站点变慢和错误

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

我们将遗留网络应用程序的 .NET 版本从 2 更改为 4。

  1. 应用程序变得非常慢

  2. 我们现在在某些情况下会遇到此错误:

    System.Data.SqlClient.SqlException:事务(进程 ID 85)在锁资源上与另一个进程发生死锁,已被选为死锁牺牲品。重新运行事务。

在运行搜索/查找类型的操作时,SELECT 查询会引发该错误。 (不是更新类型操作)。

旧应用程序运行的是相当旧的 NHibernate 2.2 版。该包生成大量查询。只是升级到最新的 3.2 版本并没有提高速度。它似乎确实摆脱了错误。但它会导致其他错误,因此我们不能在没有进行大量分析和测试的情况下直接升级。

最后是我的问题:

  1. 有什么建议吗?

  2. 我们将 WITH (NOLOCK) 添加到 SQL 查询中,错误消失了。但这会导致其他问题吗? (鉴于在导致此错误的用户操作期间未完成任何更新 - 我不确定为什么交易涉及搜索)。

我们是这个应用程序的新手,是从另一位开发者那里接手的。因此,我们将不胜感激任何帮助,甚至只是如何进行调试。我们正在尝试很多事情,但对 NHibernate 不是很熟悉,所以特别是对 NHibernate 和 .NET 版本的任何见解都会很棒。

最佳答案

一种可能是升级引入了错误,您没有优雅地发出rollback。从 .net2 升级到 .net4 可能会引入 NH session 问题,这听起来很奇怪。如果您已从经典模式转为集成模式,情况也可能如此。

对我的理论打折扣的一个选择是下载 NHProf并在本地运行您的测试(包括压力测试)以查看您是否收到未正确打开/关闭/提交的 session 。

即使这不是 session 问题,NHProf 也可能会向您显示有问题的查询所在的位置。在进行测试时,我还会启动 SQL Server Profiler 来验证 David 的理论。

我认为这两个选项是您最好的选择。

关于.net - 从 .NET 2 切换到 .NET 4 后站点变慢和错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8512768/

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