Я установил MongoDB на Ubuntu 14.04 согласно документации. Он работает и работает нормально, за исключением того, что он загадочным образом останавливается каждые несколько часов и требует перезапуска вручную с помощью service mongod restart
чтобы снова начать. Когда это происходит, в mongod.log ничего нет.
Кроме того, когда я перезапускаю, а затем проверяю статус с помощью service mongod status
, это дает мне mongod stop/waiting
событие, хотя приложение может подключиться к нему. Я искал, как это отладить, но на этом застрял.
Оказывается, проблема заключалась в том, что OOMkiller убивал процесс mongod. Как отмечено в производственных примечаниях MongoDB (https://docs.mongodb.com/v3.2/administration/production-notes/#disk-and-storage-systems):
Выделение пространства подкачки может помочь избежать проблем с памятью и предотвратить убийство mongod с помощью OOM Killer в системах Linux.
Я использовал следующие команды для создания файла подкачки, который устранил проблему (в Ubuntu 14.04):
> sudo fallocate -l 2G /swapfile
> sudo chmod 600 /swapfile
> sudo mkswap /swapfile
> sudo swapon /swapfile
Затем я добавил следующее в /etc/fstab
файл, чтобы сделать это постоянным:
/ swapfile нет swap sw 0 0