Mongodb работает?

80

Я установил 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 для справки и параметров запуска
Wed Feb 23 08:06:54 MongoDB start: pid = 7271 port = 27017 dbpath =/data/db/32-bit

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

** ПРЕДУПРЕЖДЕНИЕ. Вы работаете в OpenVZ. Это, как известно, сломано!!!

Wed Feb 23 08:06:54 версия db v1.6.5, версия pdfile 4.5
Wed Feb 23 08:06:54 git версия: 0eb017e9b2828155a67c5612183337b89e12e291
Wed Feb 23 08:06:54 sys info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen # 1 SMP Fri
Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
Ср Фев 23 08:06:54 [initandlisten] ждет подключения на порт 27017
Wed Feb 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
соединение с: test
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
соединение с: test
Wed Feb 23 08:25:10 Ошибка: не удалось подключиться к серверу 127.0.0.1 (anon): 1154
исключение: сбой подключения

Теги:
database
nosql

8 ответов

103

установите флажок:

   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, чтобы узнать, есть ли какие-либо проблемы.

  • 14
    должно быть: статус сервиса mongodb
  • 11
    Вы также можете сделать pgrep mongo .
Показать ещё 6 комментариев
34

Я нахожу:

ps -ax | grep mongo

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

  • 5
    Кроме того, вы можете захотеть добавить фильтр, чтобы он не возвращал запущенный вами процесс grep. Итак: ps -ax | grep -v grep | Греп Монго
26

Чтобы быстро проверить, работает ли mongodb, этот быстрый трюк nc даст вам знать.

nc -zvv localhost 27017

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

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

  • 1
    Да, это работает, если просто проверить, что-то слушает порт. Если это так, то выходной файл будет содержать 27017 open , иначе Connection refused будет 27017 open .
8

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

например.

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

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

  • 0
    Благодарю. Я получил это: [root@xxx lib]# ./mongodb-linux-i686-1.6.5/bin/mongod --fork --logpath /var/log/m ongodb.log --logappend all output going to: /var/log/mongodb.log forked process: 7518 но все равно, когда я закрываю оболочку и открываю новую, мне не удается Connect failed
  • 0
    хм, у меня работает (Ubuntu 64bit VM, Mongo v1.7.6), поэтому я не уверен, почему это не для вас. Если вы не можете заставить его работать, лучше всего разместить его на форумах mongodb : groups.google.com/group/mongodb-user
Показать ещё 3 комментария
5

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

pgrep mongod

3

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

2

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

1

Я знаю, что это для php, но я нашел здесь решение для node. Использование монгоскина:

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. Монгоскину нужно на самом деле позвонить (например, ping), потому что он лениво соединяется. Для php вы можете использовать метод try-to-connect. Сделайте script!

PHP:

$dbIsRunning = true
try {
  $m = new MongoClient('localhost:27017');
} catch($e) {
  $dbIsRunning = false
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню