限制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"/>