nhibernate - 运行 NServicebus 服务时出现死锁导致连接损坏

标签 nhibernate deadlock nservicebus

我们正在为 Web 应用程序运行 NServiceBus,以处理用户执行“类似批处理”操作的情况。就像发射一个影响 1000 个实体的命令一样..

它运行良好,但是在中等负载期间我们会遇到一些死锁,这不是问题,只需重试消息.. 对吗? :)

当下一条消息到达并尝试打开连接时,就会出现问题。然后连接“损坏”。

我们收到以下错误:
System.Data.SqlClient.SqlException (0x80131904): 不允许启动新请求,因为它应该带有有效的事务描述符

我在网上搜索过,我认为我们的问题是报告的 NH "bug" :

解决方法应该是禁用连接池。但我不喜欢那样,因为性能会下降..

我们正在运行 NServiceBus 2.6、NHibernate 3.3。

有人对这个有经验么?升级 NServiceBus 有帮助吗?

最佳答案

我过去曾见过这种情况,如果您的设计有保证,请尝试将事务拆分为两个,如果您将消息事务一直流向数据库操作,则任何失败都会产生级联效应并且会产生影响(理想情况下它应该't) 任何后续消息。

关于nhibernate - 运行 NServicebus 服务时出现死锁导致连接损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15356264/

相关文章:

java - 同步方法中的 BlockedLinkedQueue 死锁

Java:如何读取锁定的线程转储

amazon-ec2 - 在Amazon EC2上运行NServiceBus

NServiceBus Send() 与 SendLocal() 和异常

c# - 将 XML 文档作为参数传递给 Nhibernate ICriteria?

c# - NHibernate 事件监听器的依赖注入(inject)

c++ - Linux 上只有一个线程可能导致死锁或卡住程序?

NServiceBus 超时管理器

nhibernate - ISessionFactory.OpenSession() 来自多个线程

c# - NHibernate 嵌套类映射问题