Странный процесс запуска процесса с помощью скрипта инициализации

Я вижу странное поведение при запуске процесса с помощью сценария инициализации. Скорее всего, я делаю что-то глупое, но, возможно, кто-то может сообщить мне, что может вызвать такое поведение:

[Справочная информация: процесс является моногодом mongodb, работающим как сервер конфигурации (2.4), и я работаю на Debian 6. Процесс выполняется под пользователем 'mongodb', и я выполняю команды через SSH как пользователь без полномочий root]

  • Когда сервер загружается, процесс запускается нормально (я вижу его через ps -ef, и создается файл mongodb.pid).
  • Если я попытаюсь остановить процесс через sudo /etc/init.d/mongodb stop тогда начинается странность: я получаю mongodb apparently not running, (Процесс и PID все еще там, хотя).
  • Конечно, если я попытаюсь sudo /etc/init.d/mongodb start теперь я получаю сообщение "ошибка" и в журнале появляется сообщение об уже используемом порте, что и следовало ожидать, так как на самом деле уже запущен экземпляр.
  • Если я убью -15 процесс, а затем попробую sudo /etc/init.d/mongodb start Я получаю больше странностей: в консоли я получаю Starting database: mongodb failed! (нет больше информации). Но... процесс сейчас запущен, и в логах я не вижу никаких ошибок, просто выглядит, как будто процесс запустился нормально.
  • Если я попытаюсь остановить этот процесс с sudo /etc/init.d/mongodb stop Я получаю mongodb apparently not running,

Рассматриваемый сценарий здесь.

Есть идеи? Спасибо!

РЕДАКТИРОВАТЬ: В случае, если это связано с Монго, вот мой mongodb.conf для сервера конфигурации:

configsvr=true

dbpath=/data/configdb

logpath=/var/log/mongodb/mongodb.log
logappend=true

port = 28222
bind_ip = a_public_ip,127.0.0.1,a_private_ip

auth = true
keyFile = /srv/mongodb/keyfile

nohttpinterface = true

fork = true

Дополнительно: я вижу Starting database: mongodb failed! во время экрана загрузки (но все же есть процесс, который, казалось бы, работает нормально после загрузки).

1 ответ

Решение

Если на этом сервере запущено более одного экземпляра или что-то еще, что может поставить другое значение здесь:

PIDFILE=/var/run/$NAME.pid

Это может вызвать проблему, которую вы видите здесь, он будет искать процесс с идентификатором, который находится в этом файле, чтобы определить, mongod и какой PID остановить при выключении.

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

По сути, нам нужно иметь отдельные значения $NAME для каждого сценария инициализации, который вы используете, чтобы избежать коллизий, и убедиться, что правильное значение PID попадает в этот файл, чтобы служба работала должным образом.

Если все выглядит хорошо, то я думаю, что вы столкнулись с проблемами, описанными здесь:

https://jira.mongodb.org/browse/SERVER-7254

При вызове numactl (как это и должно быть при установке) кажется, что неправильный PID записывается в файл PID. Мы ищем отзывы об устранении неполадок, поэтому, если вы могли бы добавить свой опыт (и если у вас установлен numactl), который будет признателен.

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