web-dev-qa-db-fra.com

Est-ce que Mongodb fonctionne?

J'ai installé Mongodb et les pilotes php sur mon serveur unix.

Ma question est de savoir comment puis-je savoir si mongodb est en cours d'exécution? Existe-t-il une simple requête en ligne de commande pour vérifier l'état? Si je le lance une fois à partir du Shell, il continuera à fonctionner si je quitte le Shell (cela ne semble pas être le cas). Comment puis-je rendre la connexion mongodb persistante et démarrer automatiquement au redémarrage du serveur?

Je peux courir:

-bash-3.2 $ su
Mot de passe:
[root @ xxx] # cd/var/lib
[root @ xxx] # ./mongodb-linux-i686-1.6.5/bin/mongod
./ mongodb-linux-i686-1.6.5/bin/mongod --help pour l'aide et les options de démarrage
Mer 23 fév 08:06:54 MongoDB à partir de: pid = 7271 port = 27017 chemin_base =/data/db/32 bits

** REMARQUE: lorsque vous utilisez MongoDB 32 bits, vous êtes limité à environ 2 Go de données.
** voir http://blog.mongodb.org/post/137788967/32-bit-limitations

** AVERTISSEMENT: vous utilisez OpenVZ. Ceci est connu pour être cassé !!!

Mer 23 févr 08:06:54 db version v1.6.5, version pdfile 4.5
Mer. 23 févr. 08:06:54 version: 0eb017e9b2828155a67c5612183337b89e12e291
Mer 23 février 08:06:54 sys info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen # 1 SMP ven.
15 fév. 12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
Mer 23 fév 08:06:54 [initandlisten] en attente de connexions sur le port 27017
Mer 23 févr 08:06:54 [websvr] interface d'administration Web à l'écoute sur le port 28017

Si j'ouvre un shell séparé, je peux alors me connecter à mongodb:

-bash-3.2 $ cd/var/lib
- bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDB Shell version: 1.6.5
connexion à: test
db.foo.find ()
{"_id": ObjectId ("4d63d7d3eb95985ab19c8feb"), "a": 1}

Cependant, si je ferme le shell initial, je ne peux pas me connecter:

-bash-3.2 $ cd/var/lib
- bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDB Shell version: 1.6.5
connexion à: test
Mer 23 fév 08:25:10 Erreur: impossible de se connecter au serveur 127.0.0.1 (anon): 1154
exception: échec de la connexion

103
user623520

vérifier avec soit:

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

ou

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

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

ou

   service mongod status

pour voir si Mongod est en cours d'exécution (vous devez être root pour le faire, ou préfixez tout avec Sudo). Veuillez noter que la commande 'grep' sera toujours affichée en tant que processus séparé.

consultez le fichier journal /var/log/mongo/mongo.log pour voir si des problèmes ont été signalés.

135
Tilo

Je trouve:

ps -ax | grep mongo

Pour être beaucoup plus cohérent. La valeur renvoyée peut être utilisée pour détecter le nombre d'instances de mongod en cours d'exécution.

37

Pour vérifier rapidement si mongodb est en cours d'exécution, cette astuce rapide vous indiquera.

nc -zvv localhost 27017

La commande ci-dessus suppose que vous l'exécutez sur le port par défaut sur localhost.

Pour le démarrer automatiquement, vous pouvez regarder ce fil .

29
PiyushW

Correct, la fermeture du shell arrêtera MongoDB. Essayez d'utiliser l'argument de ligne de commande --fork pour le processus mongod, ce qui le rend exécuté en tant que démon. Je ne suis pas un gourou Unix, mais je suis sûr qu'il doit y avoir un moyen de le faire démarrer automatiquement lorsque la machine démarre.

par exemple.

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

Consultez la documentation complète sur Démarrer et arrêter Mongo .

8
AdaTheDev

cela devrait bien fonctionner ...

pgrep Mongod

8
Vinu Joseph

Pour vérifier l’état actuel de mongodb, utilisez: Sudo service mongodb status

6
magma

Probablement parce que je n'ai pas arrêté correctement mon serveur de développement ou une raison similaire. Pour résoudre ce problème, retirez le verrou et démarrez le serveur avec: Sudo rm /var/lib/mongodb/mongod.lock ; Sudo start mongodb

2
G Kiran Kumar Reddy

Je sais que c'est pour php, mais je suis arrivé ici à la recherche d'une solution pour noeud. Utilisation de peau de mongos:

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
})

Avec d’autres pilotes, vous pouvez essayer d’établir une connexion et si celle-ci échoue, vous savez que le serveur Mongo est en panne. Mongoskin doit en fait faire un appel (comme un ping) car il se connecte paresseusement. Pour php, vous pouvez utiliser la méthode try-to-connect. Faites un script!

PHP:

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