【问题标题】:OutOfMemoryException Processing Large FileOutOfMemoryException 处理大文件
【发布时间】:2011-02-02 11:31:45
【问题描述】:

我们正在将一个大型平面文件加载到 BizTalk Server 2006(原始版本,而不是 R2)中 - 大约 125 MB。我们针对它运行一个映射,然后获取每一行并调用一个存储过程。

我们在编排处理期间收到 OutOfMemoryException,Windows 服务重新启动,使用完整的 2 GB 内存,然后再次崩溃。

服务器是 32 位的,设置为使用 /3GB 开关。

我还把流程分成了 3 个主机 - 一个用于接收,另一个用于编排,第三个用于发送。

有人有什么建议让这个文件在没有错误的情况下处理吗?

谢谢, 克里普

【问题讨论】:

    标签: memory map biztalk 32-bit orchestration


    【解决方案1】:

    如果这是通过地图发送的平面文件,您正在将其转换为 XML 对吗?规模的增加可能是巨大的。 XML 可以轻松地比平面文件增加 5-10 倍。特别是如果您使用描述性或长 xml 标记名称(通常您会这样做)。

    您可以尝试的简单方法是将 xml 节点重命名为更短的名称,具体取决于记录的数量(听起来很多),这实际上可能会对您的内存占用产生相当大的影响。

    也许一种更企业化的方法是在自定义管道中将其细分为单独的消息包,这些消息包可以更易于管理的块通过系统馈送(类似于 Chris 建议的)。然后系统节流和内存指标可能会接管。如果不了解更多关于您的数据的信息,很难说如何最好地做到这一点,但是对于 125 MB 的文件,我猜您可能有大量不需要按顺序处理的重复行。

    【讨论】:

    • 非常有趣。有意义的是,较小的 XML 节点名称意味着较小的数据包大小。感谢您的提示!
    【解决方案2】:

    它在哪里崩溃?它是否超过了变换形状?另一个尝试的建议是在接收端口中运行转换。为了更有效地处理,您甚至可以分批消息并让多个同时编排实例调用存储的过程。这肯定会减少内存配置文件并提高性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多