1

我正在对 BizTalk 2010 安装进行一些性能测试,其中一项测试涉及消耗数 GB 的文件。我收到了一个非常简单的错误,但它缺少一些关键信息,而且我目前无法根据文档弄清楚。

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

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

我正在寻找有关追踪问题根源的建议,以便让我的测试恢复并运行。

4

2 回答 2

4

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

从 MSDN 帮助:

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

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

于 2013-05-07T07:36:49.937 回答
1

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

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

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

要确定您是否确实内存不足,然后是虚拟硬盘空间不足,您可能需要分析 biztalk 服务器机器的虚拟磁盘空间和/或内存使用情况。根据该调查,您在解决问题方面有几种选择,

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