#ruby-on-rails #ruby-on-rails-3 #cron #rake #whenever
#ruby-on-rails #ruby-on-rails-3 #cron #rake #всякий раз, когда
Вопрос:
Однако я использую whenever gem для вызова задач cron на основе rake… когда задачи выполняются, весь сайт (пассажирский на Nginx) перестает отвечать на запросы на время выполнения задачи.
Есть ли способ контролировать загрузку этих задач рейка, чтобы снизить нагрузку на производительность сервера?
Ответ №1:
Используя драгоценный камень ‘whenever’ внутри config / schedule.rb, вы можете переопределить определение задачи rake, чтобы добавить команду «nice -n 19» перед выполнением rake, заставляя ее выполняться с низким приоритетом.
job_type :rake, "cd :path amp;amp; RAILS_ENV=:environment nice -n 19 bundle exec rake :task --silent :output"
Ответ №2:
Это небольшая информация, но вот несколько советов:
- Запуск
rake
загрузит весь стек Rails. Убедитесь, что у вас есть система, которая может справиться с этой нагрузкой. Что происходит с использованием памяти при запуске задач rake? - Что делает ваша задача rake? Вызывает ли он URL-адрес из вашего приложения, вызывая его блокировку?
Если выполняемая вами задача rake потребляет много ресурсов процессора или памяти, вам следует подумать о расширении. Либо вертикально, путем добавления большего количества ядер RAM / CPU, либо горизонтально, запустив вместо этого задачу rake на другой машине.
Комментарии:
1. Хорошо, но есть ли какой-нибудь способ установить «хорошее» значение процесса rake, чтобы веб-сервер мог относительно беспрепятственно продолжать обработку запросов? Мы в основном перебираем объекты БД и отправляем электронные письма.