【问题标题】:Correct configuration to increase Umbraco Processing Memory正确配置以增加 Umbraco 处理内存
【发布时间】:2020-08-14 22:54:42
【问题描述】:

在处理 1.6GB 等大文件时,我不断收到 SystemOutOfMemoryException。我只是想知道我在 web.config 中的配置是否正确。以下是我为支持大于 1GB 的大文件而修改的代码行

<httpRuntime requestValidationMode="2.0" enableVersionHeader="false" maxRequestLength="457286400" executionTimeout="3600" targetFramework="4.5" fcnMode="Single" />

<security>
  <requestFiltering>
    <requestLimits maxAllowedContentLength="3294967295" />
  </requestFiltering>
</security>

我不确定这是否正确。我还通过工具-> 选项-> 项目和解决方案-> Web 项目->“使用 65 位版本的 IIS”将 IIS 服务器更改为在 x64 中运行

我不确定我缺少什么,但即使我已经增加了内存大小,我仍然会出现系统内存不足异常

更新: 我正在处理像 .mp4 文件这样的大文件,或者只是任何类型的文件,无论类型如何,只要客户端需要它。

另外,我没有使用前端上传文件。我们所做的是通过 Filezilla 上传大文件,如果文件被上传到服务器,我们使用 Umbraco MediaService 来处理这个文件,以便在媒体页面中有一个条目。我们也在使用 Hangfire 来触发我们的后台服务来处理 MediaService

【问题讨论】:

  • 您能否更具体地说明“处理大文件”的含义。是在你上传它们的时候吗?使用图像处理器调整图像大小?还有,什么样的文件?
  • 嗨@Tim我已经更新了我的问题
  • 您的配置应该足以允许 IIS 使用大文件。如果您可以发布示例代码来重现该问题,我们将不胜感激。此外,您能在 Windows 事件查看器应用程序日志中找到详细的错误消息吗?

标签: c# .net iis umbraco umbraco7


【解决方案1】:

接受这样的大文件并不是最佳做法。例如,这提供了执行 Ddos 攻击的可能性。此外,您将需要大量内存,因为文件将在内存中处理,然后再将其持久化到磁盘,因此存在内存问题。

更好的解决方案是使用 javascript 将它们分块并发送小数据包,然后将它们缝合在一起服务器端。关于如何自己构建这个有一个很好的解释:https://www.dotnetcurry.com/aspnet-mvc/893/upload-big-files-aspnet-mvc-azure-storage (取决于您处理会话的方式,将其添加到会话中可能无法解决您的内存问题。我想您需要将其保存到磁盘)

与 memroy 异常无关,但请确保将其包装在 &lt;location path="xxx/yyy"&gt; your web.config stuff &lt;/location&gt; 中,以便只有此 URL 可以接受大文件。

【讨论】:

  • 感谢您的回复。我通过传递第二个参数设法解决了这个问题。似乎该错误具有误导性,因为我当前的配置是正确的,并且该错误与处理我的大文件时内存不足并没有真正的关系。看来我只需要传递第二个和第三个参数,它们是 user_id 和 hide_error 参数。这解决了问题并能够正确保存文件。
【解决方案2】:

通过在我的 Umbraco MediaService 中添加第二个和第三个参数来解决这个问题。最初我使用的是Service.MediaService.Save(iMediaFile),但似乎在使用大文件时需要知道谁上传了文件,因此它需要第二个参数,即 user_id,我添加了第三个参数来抑制任何错误消息。当我遇到内存不足异常时,实际上错误是我没有在第二个参数中传递 user_id。因此我的新代码变成了Service.MediaService.Save(iMediaFile, user_id, false)

同样,该解决方案并不是真正的配置,因为我的配置足以处理文件。错误是由于缺少第二个参数

【讨论】:

    猜你喜欢
    • 2014-11-06
    • 1970-01-01
    • 2012-01-26
    • 2011-05-23
    • 2012-07-14
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    相关资源
    最近更新 更多