服务器空闲时的ruby进程

时间:2011-01-10 17:13:15

标签: ruby memory cpu-usage beanstalkd

我想运行Stalker作业,只有当CPU负载较小时才会影响该站点。

工作是将视频从任何格式转换为flv和mp4。所以这是一项相当昂贵的工作。

我怎样才能实现这一目标?

修改

这是一个好方法吗?

如何像smthng一样

load = `uptime`.gsub(/(.*): /,'').strip.split ' '
if (load[0].to_f < 0.7 && load[0].to_f < load[1].to_f) || (!args["max_delay"].nil? && total_delay > args["max_delay"] && load[0].to_f < 0.85)
  do stuff
end

1 个答案:

答案 0 :(得分:5)

运行一个单独的Ruby解释器进程,该进程仅执行转码并使用nice -n 19nice -n 12运行它。

您可能希望在启动解释器后降低Ruby代码中的优先级(提高 nice 级别)。

现在,您可以使用Process.setpriority来更改解释器的优先级。但除非您有特权或在Linux上且具有CAP_SYS_NICE功能,否则您将无法恢复到正常优先级。

问题的策略可能涉及接收一些工作要做,执行ProcessKernel.fork,降低优先级,运行作业,然后调用{{1 }}