OutOfMemoryException处理大文件

OutOfMemoryException处理大文件,memory,map,biztalk,32-bit,orchestration,Memory,Map,Biztalk,32 Bit,Orchestration,我们正在将一个大的平面文件加载到BizTalk Server 2006(原始版本,而不是R2)-大约125MB。我们对它运行一个映射,然后获取每一行并调用一个存储过程 我们在业务流程处理过程中收到OutOfMemoryException,Windows服务重新启动,使用2 GB内存,然后再次崩溃 服务器为32位,设置为使用/3GB交换机 此外,我还将流分为3个主机—一个用于接收,另一个用于编排,第三个用于发送 有人对如何处理这个文件没有错误有什么建议吗 谢谢, Krip在哪里崩溃?它能通过变换形

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

我们在业务流程处理过程中收到OutOfMemoryException,Windows服务重新启动,使用2 GB内存,然后再次崩溃

服务器为32位,设置为使用/3GB交换机

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

有人对如何处理这个文件没有错误有什么建议吗

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

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

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


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

非常有趣。较小的XML节点名称意味着较小的数据包大小,这是有道理的。谢谢你的提示!