Странный процесс запуска процесса с помощью скрипта инициализации
Я вижу странное поведение при запуске процесса с помощью сценария инициализации. Скорее всего, я делаю что-то глупое, но, возможно, кто-то может сообщить мне, что может вызвать такое поведение:
[Справочная информация: процесс является моногодом 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), который будет признателен.