2

我正在使用when gem 调用基于rake 的cron 任务,但是......当任务运行时,整个站点(Nginx 上的Passenger)在任务期间停止响应。

有没有办法控制这些 rake 任务的负载以减少对服务器性能的影响?

4

2 回答 2

3

使用 'whenever' gem,在 config/schedule.rb 中,您可以覆盖 rake 任务定义,在 rake 执行之前添加一个“nice -n 19”命令,使其以低优先级运行。

job_type :rake, "cd :path && RAILS_ENV=:environment nice -n 19 bundle exec rake :task --silent :output"
于 2011-10-21T23:14:41.497 回答
1

这是很少的信息,但这里有一些提示:

  • 运行rake将加载整个 Rails 堆栈。确保您有一个可以处理该负载的系统。运行 rake 任务时内存使用情况会怎样?
  • 你的 rake 任务是做什么的?它是否会从您的应用程序中调用 URL,导致它被阻止?

如果您执行的 rake 任务占用了大量 CPU 或内存,您应该考虑扩大规模。垂直方向,通过添加更多的 RAM/CPU 内核或水平方向,通过在另一台机器上运行 rake 任务。

于 2011-10-21T14:23:22.410 回答