我们正在将一个大的平面文件加载到BizTalk Server2006(原始版本,而不是R2) -大约125MB。我们对它运行一个map,然后获取每一行并调用一个存储过程。
我们在编排处理过程中收到OutOfMemoryException,Windows Service重新启动,占用了全部2 GB内存,然后再次崩溃。
服务器为32位,并设置为使用/3GB开关。
此外,我还将流分离为3个主机-一个用于接收,另一个用于编排,第三个用于发送。
有没有人有任何建议让这个文件处理时没有错误?
谢谢,克里普
发布于 2010-04-07 06:44:49
如果这是通过映射发送的平面文件,那么您是在将其转换为XML,对吗?规模的增长可能是巨大的。XML可以很容易地在平面文件上添加5-10倍的因子。特别是当您使用描述性或长xml标记名时(通常您会这样做)。
您可以尝试一种简单的方法,将xml节点重命名为更短的名称,这取决于记录的数量(听起来似乎很多),这实际上可能会对您的内存占用产生相当大的影响。
也许更企业的方法是在自定义管道中将其细分为单独的消息包,这些消息包可以通过系统以更易于管理的块的形式提供(类似于Chris的建议)。然后,系统节流和内存指标可以接管。在不了解更多数据的情况下,很难说如何最好地做到这一点,但是对于一个125MB的文件,我猜您可能有一大堆不需要按顺序处理的重复行。
发布于 2010-03-30 22:52:59
它在哪里崩溃?它是否通过了变换形状?另一个可以尝试的建议是在接收端口中运行转换。为了更有效地处理,您甚至可以讨论消息,并让多个同步编排实例调用存储的proc。这肯定会减少内存配置文件并提高性能。
https://stackoverflow.com/questions/2545470
复制相似问题