防止delayed_job后台作业在单个服务器上占用过多CPU

我的Rails应用程序有许多任务被卸载到后台进程中,比如图像大小调整和上传到S3。 我正在使用delayed_job来pipe理这些进程。

这些过程,特别是缩略图PDF(使用Ghostscript)和调整图像大小(使用ImageMagick),都是CPU密集型的,通常会消耗100%的CPU时间。 由于这些作业与Web应用程序本身以及数据库在相同的(RedHat Linux)服务器上运行,因此可能导致我们的Web应用程序无响应。

一个解决scheme是让另一台服务器只运行后台作业。 我想这将是最佳的解决scheme? 但是,由于这不是我能立刻做的事情,我不知道是否有可能以某种方式使后台作业以较低的操作系统优先级运行,并因此在工作中消耗较less的CPU周期?

感谢赞赏。

Solutions Collecting From Web of "防止delayed_job后台作业在单个服务器上占用过多CPU"

如果我没有弄错, delayed_job使用将处理所有后台作业的工作进程。 启动时应该可以轻松地更改进程的操作系统调度优先级。

所以,而不是,例如:

 ruby script/delayed_job -e production -n 2 start 

尝试:

 nice -n 15 ruby script/delayed_job -e production -n 2 start