2013-05-06 40 views
1

我正在做一些BizTalk 2010安装的性能测试,其中一项测试涉及消耗多GB的文件。我收到一个非常简单的错误,但它缺少一些关键信息,而且我无法根据文档找出它的结果。由于磁盘空间导致BizTalk接收管道故障

错误在于接收管道失败; “原因:磁盘空间不足。”

嗯。哪个磁盘?它可能是安装Windows的分区,安装BizTalk的分区,数据库服务器等等。它们似乎都有足够的空间来容纳文件,但它会变得更大,因为它被转换为XML,所以它可能是其中的任何一个。

我在寻找的建议于追踪问题的根源,所以我可以得到我的测试,备份和运行。

+0

我发现文件中存在验证错误;应用程序事件日志已满。我也注意到运行文件适配器的服务器上的临时文件非常大(12 + GB)。不知道这是与错误还是我试图处理的文件大小的一个简单症状有关。 。 。 – Ickster 2013-05-07 00:15:27

回答

3

这可能是您的临时文件夹导致您的磁盘运行已满。 当大文件得到处理时(特别是在映射或反汇编程序中),虚拟流会将部分消息写入磁盘,以便以流方式工作并防止内存泄漏。
这是将临时文件夹(%temp%变量)移动到另一个磁盘而不是c:\驱动器的最佳实践(特别是在生产环境中)。这是BizTalk存储所有大型消息片段的地方。

从MSDN帮助:

默认情况下,被映射在缓存文件系统文件被写入到BizTalk Server计算机的%temp%目录。将%temp%环境变量的设置更改为非系统磁盘,以便在映射期间将大消息缓存到文件系统时提高性能。

更多信息可以在这里找到:http://msdn.microsoft.com/en-us/library/aa560481.aspx

0

如果错误是磁盘已满,那么最有可能是因为SQL Server正在运行的磁盘空间不足。

不过,既然你提到的文件大小超过千兆字节是大小,因为在BizTalk服务器正在运行的虚拟磁盘空间的错误可能是可能的。这可能是因为您使用的接收管道使用XmlDocument类。 XmlDocument类在内存空间方面效率很低,因为它通常会占用内存大小约10倍的文件大小。所以,如果你有大约1 GB的XML文件,使用XmlDocument将占用约10 GB的RAM。

既然你提到的文件尺寸范围在12GB +,它极有可能在BizTalk服务器正在运行的RAM内存,除非你有数百GB的内存。发生这种情况时,Windows操作系统的默认设置是将多余的数据从RAM存储到名为虚拟磁盘空间的硬盘中。看起来机器的磁盘空间不足 - 这可能会解释您遇到的错误。

可以肯定的,如果你确实运行内存和随后的虚拟硬盘空间,您可能要分析的BizTalk Server机器的虚拟磁盘空间和/或内存使用。根据该调查,你在得到一个分辨率方面有几个选择,

  • 同时增加内存和硬盘空间 - 这可能是一个快速简便的方法来达到所需的性能,无需任何代码和/或设计/架构重构。
  • 中断文件大小 - 如果可能的话,将文件大小分成较小的文件。
  • 使用自定义管道和管道组件 - 您可能想要调查