ImageMagick で /tmp/magick-xxx というサイズの大きいファイルができたときの解決方法と policy.xml の設定変更
- 2018 3/1
- カテゴリー : ImageMagick
- コメントを書く
ImageMagick を利用中のサーバーで /tmp/magick-xxx というような名前のサイズの大きいファイルができたときの解決方法と policy.xml の設定変更についてご紹介します。
前提
ngx_small_light で構築した画像処理サーバーで、ImageMagick を使っているのですが、突然 Disk warning や alert が発生していました。
/tmp/magick-xxx ファイルの確認・削除手順
まず、df コマンドでディスクの空き容量を確認します。97% で残り 290MB でした…。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 7.8G 7.4G 290M 97% / devtmpfs 3.6G 20K 3.6G 1% /dev tmpfs 3.6G 0 3.6G 0% /dev/shm |
/tmp ディレクトリ以下に ImageMagick が出力した tmp ファイルがあることを確認します。
$ ls -lh /tmp/ total 2.0G -rw------- 1 nginx nginx 2.0G Mar 3 06:56 magick-9162ZVLalRUJc16h |
問答無用で削除しましょう。
$ sudo rm /tmp/magick-9162ZVLalRUJc16h |
ImageMagick の設定変更
ImageMagick の設定値を確認したところ Disk: unlimited でした。
$ identify -list resource Resource limits: Width: 214.7MP Height: 214.7MP Area: 15.31GP Memory: 7.1292GiB Map: 14.258GiB Disk: unlimited File: 768 Thread: 4 Throttle: 0 Time: unlimited |
/usr/local/etc/ImageMagick-6/policy.xml を以下のように修正しました。
<policymap> <policy domain="resource" name="map" value="0B"/> <policy domain="resource" name="disk" value="0B"/> <policy domain="resource" name="thread" value="1"/> <!-- 並列処理を無効にしたほうが画像リサイズは速い --> </policymap> |
policy.xml を修正後、すぐに設定が反映されていることを identify -list resource コマンドから確認できます。
$ identify -list resource Resource limits: Width: 214.7MP Height: 214.7MP Area: 15.31GP Memory: 7.1292GiB Map: 0B Disk: 0B File: 768 Thread: 1 Throttle: 0 Time: unlimited |
以上、ImageMagick が出力するファイルサイズの大きい tmp ファイルに悩まされていた現場からお送りしました。