限制Imagemagick使用的空间和内存

时间:2015-07-13 15:51:52

标签: ruby-on-rails linux imagemagick rmagick

我在rails应用程序上使用Imagemagick(使用rmagick)但我的服务器(Ubuntu)不是很大,当我启动转换过程时Imagemagick占用我服务器的所有位置/内存(30GB) HDD)。

我想限制内存和tmp文件大小,我该怎么办?

2 个答案:

答案 0 :(得分:3)

尝试运行命令

identify -list resource

查看您可以控制/限制的资源。它给出了这个:

Resource limits:
  Width: 214.7MP
  Height: 214.7MP
  Area: 4.295GP
  Memory: 2GiB       <--- Default is 2 GiB
  Map: 4GiB
  Disk: unlimited
  File: 1920
  Thread: 1
  Throttle: 0
  Time: unlimited

然后,您可以使用convertidentify以及mogrify

这样的命令控制内存
identify -limit memory 1GiB -list resource
Resource limits:
  Width: 214.7MP
  Height: 214.7MP
  Area: 4.295GP
  Memory: 1GiB         <--- 1 GiB for duration of this command
  Map: 4GiB
  Disk: unlimited
  File: 1920
  Thread: 1
  Throttle: 0
  Time: unlimited

因此,正如您在上面所看到的,我将一个命令的内存限制为1GB。

同样,您可以使用

限制convert的内存
convert -limit memory 1GiB -size ... file.png

您还可以在环境变量中设置内存限制,单次拍摄,如下所示:

MAGICK_MEMORY_LIMIT=30000 identify -list resource
Resource limits:
  Width: 214.7MP
  Height: 214.7MP
  Area: 4.295GP
  Memory: 29.3KiB
  Map: 4GiB
  Disk: unlimited
  File: 1920
  Thread: 1
  Throttle: 0
  Time: unlimited

或者在剩下的会话中这样:

export MAGICK_MEMORY_LIMIT=500000
identify -list resource

Resource limits:
  Width: 214.7MP
  Height: 214.7MP
  Area: 4.295GP
  Memory: 488KiB
  Map: 4GiB
  Disk: unlimited
  File: 1920
  Thread: 1
  Throttle: 0
  Time: unlimited

Kurt还提供了一些很好的建议here

答案 1 :(得分:0)

$ man ulimit

阅读 -f 条目并执行:

$ ulimit -f 1024000
$ convert blah blah blah
$ ulimit -f <usual-value>

应将 convert 进程限制为编写1G文件。务必在之后恢复原始值。

相关问题