Как перезапустить Sidekiq, когда он давит?
Я начал Sidekiq по
bundle exec sidekiq -d -L log/sidekiq.log -C config/sidekiq.yml -e production
Иногда Сидекик был раздавлен, занят =0 и поставил в очередь> 0.
Как я могу настроить sidekiq на перезапуск после того, как он раздавлен / остановлен?
1 ответ
Вы можете использовать некоторые автоматизированные пакеты или написать собственный скрипт bash для этого.
Я лично предпочитаю писать свои собственные сценарии, поэтому позвольте мне объяснить, что:
- Напишите скрипт, который выполняет sidekiq, если он еще не запущен
- Напишите cronjob для выполнения этого скрипта каждую минуту
Обратите внимание, что этот метод не является мгновенным, что означает, что у вас может быть время простоя до 1 минуты, так как cronjob работает каждую минуту. Так что, если ваш проект чувствителен к этому, вы можете использовать один из инструментов управления процессами, таких как monit
или же god
,
Ваш скрипт bash должен содержать вашу команду,
bundle exec sidekiq -d -L log/sidekiq.log -C config/sidekiq.yml -e production
Но убедитесь, что вы используете абсолютные пути, если вы собираетесь хранить свой скрипт вне директории вашего проекта.
Вот полезная тема о написании сценария оболочки, чтобы проверить, существует ли этот процесс.
Чтобы запустить скрипт каждую минуту, сделайте следующее:
- Перейти к вашему терминалу
- Тип
crontab -e
- присоединять
* * * * * /bin/bash -l -c 'cd /PATH/TO/YOUR/DIR && sh SCRIPTNAME.sh'
- Сохранить и выйти из редактора
Делая это, вы говорите своему компьютеру выполнять ваш скрипт каждую минуту. Обычно люди предпочитают писать только * * * * * /path/to/script.sh
их crontab, но это не удается в некоторых обстоятельствах.
Надеюсь это поможет.