ImageMagickで、/tmpとかにmagick-ayu89r53とかいうサイズの大きいファイルが出来るのをなんとかしたい

2013年6月7日

ImageMagickを使って日々運用していると、時々ディスクフルアラートが出たりします。。

よく調べてみると、/tmpにmagick-ayu89r53とかよく分からないファイルが数十GB位のサイズになっていてびっくりします。。

別に定期的に出る訳では無く、たまに出たりするので、なんとも分からないのですが

ImageMagick本家のドキュメントを調べてみると

http://www.imagemagick.org/script/command-line-options.php
[text]-limit <em>type value</em>[/text]
というのが設定出来るようです。

このlimitの概要にはSet the pixel cache resource limit.となっていまして
具体的には
[text]<code>area</code>, <code>disk</code>, <code>file</code>, <code>map</code>, <code>memory</code>, <code>threads</code>, <code>time</code>[/text]
が指定出来るようです。

diskは、その名の通り、disk使用量。おそらく、この設定が/tmp/magick-ナンタラ

に影響しているのでは無いかと思ったりします。

これらの現在の設定値を確認出来るコマンドがあるので、叩いてみます。
[shell]identify -list resource[/shell]
このdiskの初期値が18.446744EBとか書いてあります。

EBって何ですか!?

と一瞬びっくりしますが、エクサバイトの事ですかね。

今の運用環境からするとほぼ無限なサイズがデフォルトに指定されています。

ここを変えるだけで、バカみたいにでかい/tmp/magick-ナンタラは出来なくなるかと思います。

まだ検証はしていません。

これから実験運用してみようかと思います。

ちなみに、このオプションの設定ですが

convertコマンドを叩く時はそのまま-limit disk 1GBと書けば良いです。

別アプリからライブラリを叩く場合は

ImageMagickの設定のディレクトリに入っているpolicy.xmlに、<policymap>があるので

このなかでname=”disk”のものを探して1GBに設定すれば良いはずです。