mongodb не завершает работу корректно при завершении работы системы

Когда я выключаю Ubuntu с запущенным mongodb (установленным через apt), иногда кажется, что mongodb не завершает завершить работу полностью - файл журнала соответствует исправному завершению работы, закрытию файлов, очистке журнала и т. Д., Но filnal [interruptThread] shutdown: removing fs lock... ] отсутствует, и (неудивительно), что mongodb отказывается запускаться при следующей загрузке, жалуясь на устаревший файл блокировки.

Мне кажется, что для сервисов есть время ожидания, которое истекает, и, таким образом, mongodb убивается принудительно.

Нарушитель MongoDB является частью набора реплик, которые синхронизируются окончено SSH туннелей. Таким образом, возможно, что сокет зависает и удерживает окончательную очистку (включая удаление файла блокировки) ??

Что я могу сделать с этим? Могу ли я установить более продолжительный тайм-аут для MongoDB для выключения? Могу ли я настаивать на том, что MongoDB будет позволено умереть чисто, прежде чем SSH туннелей убивают? Есть ли еще одно объяснение, по которому я скучаю?

1
задан 8 September 2013 в 14:21

1 ответ

Действительно, существует ограничение по времени, в течение которого службам разрешается отключаться. Ubuntu использует upstart для запуска и остановки сервисов, и ограничение по умолчанию для upstart составляет 5 секунд (см. Документацию upstart по таймауту уничтожения ). Возможно, это решит вашу проблему, если вы увеличите время ожидания. Вы должны поместить директиву kill timeout, упомянутую в ссылке в файле конфигурации upstart для mongodb. На Ubuntu 12.04 этот файл находится в /etc/init/mongodb.conf. Вы можете найти файл upstart, который содержит директиву kill timeout в текущем источнике mongodb . (Однако этот файл может не работать в вашей системе Ubuntu из-за разных путей.)

У меня была такая же проблема в Ubuntu 12.04 даже без репликации, и я kill timeout 300 исправил эту проблему.

0
ответ дан 8 September 2013 в 14:21

Другие вопросы по тегам:

Похожие вопросы: