OutOfMemoryException处理大文件

时间:2010-03-30 13:21:17

标签: memory map biztalk 32-bit orchestration

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

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

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

此外,我已将流分为3个主机 - 一个用于接收,另一个用于编排,第三个用于发送。

任何人都有任何建议让这个文件处理错误吗?

谢谢, Krip

2 个答案:

答案 0 :(得分:3)

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

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

也许更加企业化的方法是将自定义管道中的这个细分为单独的消息包,这些消息包可以通过系统以更易管理的方式提供(类似于Chris建议的那样)。然后系统限制和内存指标可以接管。在不了解您的数据的情况下,很难说如何做到这一点,但是对于125 MB的文件,我猜你可能有大量不需要按顺序处理的重复行。

答案 1 :(得分:2)

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