【问题标题】:What causes NHibernate “Internal Connection Fatal” errors?是什么导致 NHibernate “内部连接致命”错误?
【发布时间】:2013-11-10 14:12:31
【问题描述】:

当 NHibernate 的日志级别设置为“DEBUG”时,我们开始在日志中看到一堆“内部连接致命”错误。看起来 NHibernate 在处理特定结果集时会以大约 ½ 的方式死亡。根据日志,NHibernate 读取的最后一列似乎有垃圾,而这些垃圾不在基础数据中。

问题似乎消失了:

  1. 日志级别设置回“错误”。
  2. 正在查询的视图已更改为返回更少的数据(更少的行或各个列的空值或空白值)。

我们正在使用 ASP.NET MVC、IIS7、.NET Framework 4.5、SQL Server 2012、log4net.2.0.2 和 NHibernate.3.3.3.4001。

我想我真正担心的是代码中存在一些隐藏的问题,日志记录的额外压力正在暴露出来,但我不确定它可能是什么。我已经仔细检查了 NHibernate 映射,它们看起来不错。我还检查以确保我在每个请求结束时处理 NHibernate 会话。我还尝试增加命令超时,这似乎没有什么不同。

【问题讨论】:

    标签: sql-server nhibernate log4net


    【解决方案1】:

    如果其中一列是非简单类型(二进制、文本等),nh 可能在填充属性时遇到问题。

    【讨论】:

    • 感谢您的快速回复。我只使用以下类型:varchar、datetime、nvarchar 和 float。
    【解决方案2】:

    原来从我们的开发应用服务器到我们的开发数据库服务器的连接很不稳定。

    1. 从开发应用服务器,打开 SSMS 并尝试连接到开发数据库服务器。
    2. 有时我们会收到“内部连接致命错误”,有时不会。

    【讨论】:

      【解决方案3】:

      问题可能是由 TCP Chimney Offload/SQL Server 不兼容引起的。

      查看以下知识库文章以获取可能的解决方案: http://support.microsoft.com/kb/942861

      对于 Windows 7/2008 R2:

      默认情况下,TCP 烟囱卸载功能设置为自动。这意味着 烟囱不会卸载所有连接。相反,它 有选择地卸载满足以下条件的连接:

      通过每秒 10 Gb (Gbps) 建立连接 以太网适配器。

      平均往返链路延迟小于 20 毫秒。

      至少交换了 130 千字节 (KB) 的数据 连接。

      最后一个条件是在数据集中间触发的,所以你看到的是垃圾而不是真实数据。

      【讨论】:

        猜你喜欢
        • 2010-11-12
        • 1970-01-01
        • 1970-01-01
        • 2022-06-28
        • 2013-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多