AEM DAM での ImageMagick のメモリ使用を制限
この記事では、ImageMagick 変換プロセスでメモリ消費を制限する方法について説明します。 ImageMagick には、メモリ、マップ、ディスク、ファイル制限など、リソースの使用状況を制御するためのオプションがいくつか用意されています。 これらは、-limit オプションを使用して設定できます。
説明 description
環境
- Adobe Experience Manager(AEM)
問題/症状
Adobe Experience Managerの DAM (Digital Asset Management) ImageMagick は大量のメモリを消費します。 .ai アセットがアップロードされると(MIME タイプの application/postscript)、取り込みワークフローは ImageMagick プロセスを呼び出してサムネールを生成します。 ImageMagick は多くのメモリを消費します(例えば、プロセスごとに最小 15% のメモリ)。
.ai タイプの 5 つのアセットがアップロードされると、ImageMagick がシステム内のすべてのメモリを消費し、AEMが停止します。
ImageMagick 変換プロセスでメモリ消費を制限する方法はありますか?
解決策 resolution
ImageMagick には、メモリ、マップ、ディスク、ファイル制限など、リソースの使用状況を制御するためのオプションがいくつか用意されています。 これらは、-limit オプションを使用して設定できます。
-limit オプションを使用すると、変換プロセスの様々なリソース制限を設定できます。 メモリ制限を設定する構文は次のとおりです。
convert -limit memory <
value>
input_image output_image
ここで、*<
value>
*は、プロセスが使用できる最大メモリ量(バイト単位)です。 MB (メガバイト)や GB (ギガバイト)などのサフィックスを使用して、読みやすくすることができます。
例:
メモリの使用量を 500 MB に制限するには、次を実行します。
convert -limit メモリ 500 MB input_image.jpg output_image.jpg
メモリに加えて、その他のリソースを制限することもできます。
- マップ:メモリマップの使用量を制限します。
- ディスク:ディスク領域の使用量を制限します。
- ファイル:開くファイルの数を制限します。
構文はメモリ制限に似ています。
convert -limit マップ 1GB -limit ディスク 2GB -limit ファイル 50 input_image.jpg output_image.jpg
また、ImageMagick ポリシー設定ファイル(通常はバージョンに応じて /etc/ImageMagick-6/policy.xml} または 2}/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"/>