由于磁盘空间,BizTalk接收管道失败

时间:2013-05-06 23:21:22

标签: windows-server-2008 biztalk biztalk-2010

我正在对BizTalk 2010安装进行一些性能测试,其中一个测试涉及使用一个多GB的文件。我收到一个非常简单的错误,但它缺少一些关键信息,到目前为止我无法根据文档解决这个问题。

错误是接收管道失败; “原因:磁盘上没有足够的空间。”

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

我正在寻找有关追踪问题根源的建议,以便我可以重新启动并运行测试。

2 个答案:

答案 0 :(得分:4)

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

来自MSDN帮助:

  

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

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

答案 1 :(得分:1)

如果错误显示磁盘已满,则很可能是因为sql server磁盘空间不足。

但是,由于您提到文件大小超过千兆字节大小,因此错误可能是因为BizTalk服务器的虚拟磁盘空间不足。这可能是因为您使用的接收管道使用XmlDocument类。 XmlDocument类在内存空间方面非常无效,因为它通常占用文件大小的内存的大约10倍。因此,如果你有大约1 GB的xml文件,使用XmlDocument将占用大约10 GB的RAM。

由于您提到的文件大小范围为12GB +,因此除非您有数百GB的内存,否则很可能BizTalk服务器的RAM内存不足。发生这种情况时,Windows操作系统的默认设置是将多余的数据从RAM存储到称为虚拟磁盘空间的硬盘中。似乎机器也没有磁盘空间 - 这可能解释了你得到的错误。

为了确定您的内存是否确实耗尽然后是虚拟硬盘空间,您可能需要为biztalk服务器计算机配置虚拟磁盘空间和/或内存使用情况。根据调查结果,您在获得解决方案方面有一些选择,

  • 增加RAM和硬盘空间 - 这可能是一种快速简便的方法,无需任何代码和/或设计/架构重构即可实现所需的性能。
  • 打破文件大小 - 如果可能,将文件大小分解为较小的文件。
  • 使用自定义管道和管道组件 - 您可能需要调查