gpt4 book ai didi

azure - Azure 中的 System.OutOfMemoryException 但不是本地的

转载 作者:行者123 更新时间:2023-12-02 22:56:45 25 4
gpt4 key购买 nike

我有以下代码,它使用名为 Aspose.Words 的第三方库:

SaveOptions saveOptions = SaveOptions.CreateSaveOptions(SaveFormat.Docx);
saveOptions.MemoryOptimization = true;
saveOptions.TempFolder = Path.GetTempPath();
var mm = new RecyclableMemoryStreamManager();
using (RecyclableMemoryStream ms = new RecyclableMemoryStream(mm))
{
doc.Save(ms, saveOptions);
return ms.ToArray();
}

我在 using 语句中遇到以下错误。

Mvc.ExceptionHandling.AbpExceptionFilter - Exception of type 'System.OutOfMemoryException' was thrown.

我无法在本地重现它(在处理过程中我的内存使用量可能增加了 200mb,因此它实际上并没有使用太多内存)。文件本身大小仅为 56MB。 Aspose 告诉我它最多可以使用该数量的 10 倍......即使如此也应该没问题。我已更改服务计划以扩展到 14GB 内存。

我正在使用 RecyclableMemoryStreamManager,因为我已经尝试使用 MemoryStream 但没有成功。

我还能做些什么来解决这个我只在 Azure(开发和生产)中遇到的问题?Azure API是.net核心堆栈,平台为64位。

提前致谢。

最佳答案

您使用什么 Azure 服务产品?

大多数基于应用服务的产品(包括消费计划中的 Azure Functions)每个进程/应用的内存上限为 1.5GB,无论您选择哪种应用服务定价计划。 消费计划中的 Azure Functions 的值为 max memory limit of 1.5GB每个功能应用程序实例(扩展可以允许多个实例)和其他产品也有 limits,以防止您吞噬底层机器的所有内存。 (您本地的环境没有这些限制)

如果没有实际的指标,很难解决这个问题。运行您的代码,然后在崩溃后等待几分钟,然后查看应用程序的指标,尤其是在工作内存和私有(private)字节下。这些可以在应用服务的指标部分中找到。

如果这些在您崩溃之前就达到了极限,这可能就是原因。如果是这种情况,您在 Azure 中的选择是

  • 减少内存占用
    • 优化当前工作,使其使用更少的内存
    • 或者将工作拆分为多个作业,每个作业使用较少的内存并使用 Azure Functions 或类似工具
  • 使用应用服务环境(大量内存、隔离网络,但价格不菲)
  • 使用虚拟机(Azure 为几乎任何大小提供 memory optimized VMs)

关于azure - Azure 中的 System.OutOfMemoryException 但不是本地的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59326131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com