Mongodb работает? - PullRequest
       3

Mongodb работает?

102 голосов
/ 23 февраля 2011

Я установил mongodb и драйверы php на свой сервер Unix.

Мой вопрос: как я могу узнать, работает ли mongodb? Существует ли простой запрос командной строки для проверки состояния? Если я запускаю его один раз из оболочки, он продолжит работать, если я выйду из оболочки (похоже, это не так). Как сделать соединение mongodb постоянным и автоматически запускаться при перезагрузке сервера?

Я могу запустить:

-bash-3.2 $ su
Пароль:
[root @ xxx] # cd / var / lib
[root @ xxx] # ./mongodb-linux-i686-1.6.5/bin/mongod
./mongodb-linux-i686-1.6.5/bin/mongod --help для справки и параметров запуска
Ср. 23 февраля 08:06:54 Запуск MongoDB: pid = 7271 port = 27017 dbpath = / data / db / 32-bit

** ПРИМЕЧАНИЕ: при использовании 32-битной MongoDB вы ограничены объемом данных около 2 гигабайт
** см http://blog.mongodb.org/post/137788967/32-bit-limitations

** ВНИМАНИЕ: Вы работаете в OpenVZ. Известно, что это сломано !!!

ср. 23 февраля 08:06:54 дБ версия v1.6.5, версия pdfile 4.5
Ср 23 февраля 08:06:54 git версия: 0eb017e9b2828155a67c5612183337b89e12e291
Ср. 23 февраля 08:06:54 Информация о системе: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen # 1 SMP Пт
15 февраля 12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
Ср. 23 фев. 08:06:54 [initandlisten] ожидает подключения через порт 27017
Ср. 23 февраля 08:06:54 [websvr] интерфейс веб-администратора прослушивает порт 28017

Если я открою отдельную оболочку, то смогу подключиться к mongodb:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
Версия оболочки MongoDB: 1.6.5
подключение к: тест
db.foo.find ()
{"_id": ObjectId ("4d63d7d3eb95985ab19c8feb"), "a": 1}

Однако, если я закрою начальную оболочку, я не смогу подключиться:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
Версия оболочки MongoDB: 1.6.5
подключение к: тест
Ср 23 фев. 08:25:10 Ошибка: не удалось подключиться к серверу 127.0.0.1 (anon): 1154
исключение: ошибка подключения

Ответы [ 8 ]

134 голосов
/ 02 апреля 2011

проверить с помощью:

   ps -edaf | grep mongo | grep -v grep  # "ps" flags may differ on your OS

или

   /etc/init.d/mongodb status     # for MongoDB version < 2.6

   /etc/init.d/mongod status      # for MongoDB version >= 2.6

или

   service mongod status

чтобы увидеть, работает ли mongod (для этого вам нужно быть пользователем root или все префиксом sudo). Обратите внимание, что команда 'grep' всегда будет отображаться как отдельный процесс.

проверьте файл журнала /var/log/mongo/mongo.log, чтобы увидеть, есть ли сообщения о проблемах

37 голосов
/ 07 декабря 2011

Я нахожу:

ps -ax | grep mongo

Чтобы быть более последовательным. Возвращаемое значение можно использовать для определения количества запущенных экземпляров mongod

28 голосов
/ 04 августа 2014

Для быстрой проверки, работает ли mongodb, этот быстрый трюк nc сообщит вам.

nc -zvv localhost 27017

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

Для автоматического запуска вы можете посмотреть эту ветку .

8 голосов
/ 07 июля 2017

это должно работать нормально ...

pgrep mongod

8 голосов
/ 23 февраля 2011

Правильно, закрытие оболочки остановит MongoDB. Попробуйте использовать аргумент командной строки --fork для процесса mongod, который вместо этого запускает его как демон. Я не гуру Unix, но я уверен, что должен быть способ автоматически запустить его при загрузке машины.

, например

mongod --fork --logpath /var/log/mongodb.log --logappend

Ознакомьтесь с полной документацией по Запуск и остановка Mongo .

6 голосов
/ 18 февраля 2018

Для проверки текущего состояния работы mongodb используйте: sudo service mongodb status

2 голосов
/ 17 июля 2013

Возможно, из-за того, что я не выключил свой сервер разработки должным образом или по той же причине.Чтобы исправить это, снимите блокировку и запустите сервер с: sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb

1 голос
/ 06 сентября 2014

Я знаю, что это для PHP, но я попал сюда в поисках решения для узла.Использование mongoskin:

mongodb.admin().ping(function(err) {
    if(err === null)
        // true - you got a conntion, congratulations
    else if(err.message.indexOf('failed to connect') !== -1)
        // false - database isn't around
    else
        // actual error, do something about it
})

С другими драйверами вы можете попытаться установить соединение, и в случае сбоя вы знаете, что сервер mongo не работает.Монгоскин должен сделать некоторый вызов (например, пинг), потому что он подключается лениво.Для php вы можете использовать метод try-to-connect.Сделай скрипт!

PHP:

$dbIsRunning = true
try {
  $m = new MongoClient('localhost:27017');
} catch($e) {
  $dbIsRunning = false
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...