Назад | Перейти на главную страницу

Автоматический перезапуск MongoDB в случае сбоя

Я запускаю MongoDB на сервере Ubuntu. Он использует сценарий выскочки для запуска mongod при загрузке машины. Я заметил, что если процесс выйдет из строя, он не будет перезапущен.

Как я могу убедиться, что в случае сбоя процесс mongod перезапустился?

Я сам нашел ответ: самый простой способ добиться этого - добавить следующие две строки в конец скрипта выскочки, установленного MongoDB (/etc/init/mongodb.conf):

respawn
respawn limit 10 90

Это попытается перезапустить процесс, если он завершится, и остановится, если он выйдет из строя более 10 раз за 90 секунд.

Основываясь на принятом ответе (и поскольку у меня недостаточно представителей, чтобы его прокомментировать)

Respawn НЕ является параметром конфигурации mongo, он предназначен для файла конфигурации службы выскочки.

respawn
respawn limit 10 90

В Digital Ocean есть хороший учебник по использованию upstart и systemd (новее). https://www.digitalocean.com/community/tutorials/how-to-configure-a-linux-service-to-start-automatically-after-a-crash-or-reboot-part-1-practical-examples

Я думаю ты хочешь что-то вроде Монит или Бог здесь для автоматического перезапуска служб при их остановке / сбое. Ваше описание самой аварии предполагает OOM Killer, чего можно избежать с помощью настройка свопа место на хосте.

Прежде всего, вы должны понять, почему происходит сбой системной службы. Недостаток памяти? Ошибки в библиотеках? Неправильный или не обновленный пакет? Ваше программное обеспечение, использующее MongoDB, не работает должным образом?

В неудачном случае вы не можете найти ответ, вы можете использовать грубую силу для своей системы: я бы регулярно проверял с помощью скрипта, существует ли файл Mongod PID, он должен храниться где-то в / var / run, если нет, service mongod start.

Вы могли бы использовать Руководитель, этот инструмент может перезапустить все, что вам нужно, и его очень просто настроить.