3

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

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

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

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

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

谢谢,克里普

4

2 回答 2

3

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

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

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

于 2010-04-06T22:44:48.580 回答
2

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

于 2010-03-30T14:52:58.903 回答