jos*_*sal 5 ruby-on-rails rmagick heroku sidekiq
我试过使用2X工作器dyno,等待不能得到R14错误,但这是结果:
2013-06-04T13:03:30.723260+00:00 heroku[worker.1]: Process running mem=1047M(102.3%)
2013-06-04T13:03:30.723260+00:00 heroku[worker.1]: Error R14 (Memory quota exceeded)
Run Code Online (Sandbox Code Playgroud)
但是,工作人员的任务已成功完成.
问题:
提前致谢
我终于找到了解决方案.问题在于rmagick.它获得了它看到的所有内存.如果你使用2X工作人员dyno而不是1X工作人员dyno并不重要.它增长到最大可用资源.所以,我们必须设定一个限制.但就我而言,并非所有限制都有效.
您可以通过以下方式直接进行系统调用:
convert -limit memory 0 -limit map 0 list_of_input_files output_file
这样,您可以避免使用内存缓存,直接转到磁盘缓存.这是我发现在heroku中避免R14错误的唯一方法.对于其他类似-limit memory 32 -limit map 64或类似的组合,它总是给我错误.我从这里接受了这个想法.
当然,你可以随时使用rmagick库这个行,但它对我不起作用,我确实使用了之前解释过的syscall方法:
Magick.limit_resource(:memory, 0)
Magick.limit_resource(:map, 0)
Run Code Online (Sandbox Code Playgroud)
更新:我已经使用该nice命令来确保更高的优先级.它似乎有所改善,但最终我得到R14错误,但它确实不常见(即使使用相同的文件!).
| 归档时间: |
|
| 查看次数: |
2146 次 |
| 最近记录: |