服务器空闲时的ruby进程

Ami*_*mit 2 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
Run Code Online (Sandbox Code Playgroud)

Dig*_*oss 5

运行一个单独的Ruby解释器进程,它只进行转码并运行nice -n 19或者运行它nice -n 12.

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

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

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