Oll*_*lly 2 linux background ruby-on-rails delayed-job
My Rails应用程序有许多任务可以卸载到后台进程中,例如图像大小调整和上传到S3.我正在使用delayed_job来管理这些进程.
这些过程,特别是缩略图PDF(使用Ghostscript)和调整图像大小(使用ImageMagick),是CPU密集型的,通常占用100%的CPU时间.由于这些作业在与Web应用程序本身(以及数据库)相同的(RedHat Linux)服务器上运行,因此可能导致我们的Web应用程序无响应.
一种解决方案是获取另一台仅运行后台作业的服务器.我想这将是最佳解决方案?但是,由于这不是我能立即做的事情,我想知道是否有可能以某种方式使后台作业以较低的操作系统优先级运行,因此在工作中消耗较少的CPU周期?
思想赞赏.
如果我没弄错的话,delayed_job使用将处理所有后台作业的工作进程.启动它时,应该可以轻松地更改进程的OS调度优先级.
因此,而不是,例如:
ruby script/delayed_job -e production -n 2 start
Run Code Online (Sandbox Code Playgroud)
尝试:
nice -n 15 ruby script/delayed_job -e production -n 2 start
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1776 次 |
| 最近记录: |