Rails 3: задача Rake на производственном сервере замедляет работу сайта до сканирования - PullRequest
2 голосов
/ 21 октября 2011

Я использую гем всякий раз, чтобы вызывать основанные на рейке задачи cron, однако ... когда задачи запускаются, весь сайт (Passenger on Nginx) перестает отвечать на запросы во время выполнения задачи.

Есть ли способ контролировать загрузку этих граблей, чтобы снизить производительность сервера?

Ответы [ 2 ]

3 голосов
/ 22 октября 2011

Используя гем 'ever' внутри config / schedule.rb, вы можете переопределить определение задачи rake, чтобы добавить команду «nice -n 19» перед выполнением rake, заставляя ее работать с низким приоритетом.

job_type :rake, "cd :path && RAILS_ENV=:environment nice -n 19 bundle exec rake :task --silent :output"
1 голос
/ 21 октября 2011

Это небольшая информация, но вот несколько указателей:

  • Запуск rake загрузит весь стек Rails.Убедитесь, что у вас есть система, которая может справиться с этой нагрузкой.Что происходит с использованием памяти при запуске задач rake?
  • Что делает ваша задача rake?Вызывает ли он URL из вашего приложения, вызывая его блокировку?

Если выполняемая вами задача rake потребляет много ресурсов ЦП или памяти, вам следует подумать об увеличении.Либо по вертикали, добавив больше ядер RAM / CPU, либо по горизонтали, запустив вместо этого задачу rake на другом компьютере.

...