限制AEM DAM中的ImageMagick内存消耗

本文可帮助您了解如何限制ImageMagick转换过程中的内存消耗。 ImageMagick提供了多种控制资源使用的选项,包括内存、映射、磁盘和文件限制。 可以使用​ -limit ​选项设置这些值。

描述 description

环境

  • Adobe Experience Manager (AEM)

问题/症状

Adobe Experience Manager的DAM(数字资产管理)ImageMagick占用大量内存。 上传.ai资产(MIME类型application/postscript)时,摄取工作流会调用ImageMagick进程来生成缩略图。 ImageMagick占用大量内存(例如,每个进程至少占用15%的内存)。

如果上传了5个.ai类型的资源,ImageMagick将占用系统中的所有内存并关闭AEM。

能否限制ImageMagick转换过程中的内存消耗?

解决方法 resolution

ImageMagick提供了多种控制资源使用的选项,包括内存、映射、磁盘和文件限制。 可以使用​ -limit ​选项设置这些值。

-limit ​选项允许您为转换过程设置各种资源限制。 设置内存限制的语法如下:

转换 — 限制内存<> input_image output_image

其中*<>*是允许进程使用的最大内存量(以字节为单位)。 您可以使用后缀(如MB(表示MB)或GB(表示GB)来提高可读性。

示例:

要将内存使用限制为500MB,您需要运行:

转换 — 限制内存500MB input_image.jpg output_image.jpg

除了内存之外,您还可以限制其他资源:

  • 映射:限制内存映射使用量。
  • 磁盘:限制磁盘空间使用量。
  • 文件:限制打开文件的数量。

语法类似于内存限制:

转换 — 限制映射1GB — 限制磁盘2GB — 限制文件50 input_image.jpg output_image.jpg

您还可以通过修改ImageMagick策略配置文件(通常位于​ /etc/ImageMagick-6/policy.xml ​或​ /etc/ImageMagick-7/policy.xml,具体取决于您的版本)来设置默认资源限制。

以下是如何在配置文件中设置这些限制的示例:

<policymap>
<policy domain="resource" name="memory" value="500MB"/>
<policy domain="resource" name="map" value="1GB"/>
<policy domain="resource" name="disk" value="2GB"/>
<policy domain="resource" name="file" value="50"/>
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f