Mongodb fonctionne-t-il?


117

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

Ma question est de savoir comment puis-je savoir si mongodb fonctionne? Existe-t-il une simple requête en ligne de commande pour vérifier l'état? Si je le lance une fois depuis le 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 - aide pour l'aide et les options de démarrage
Mer 23 février 08:06:54 Démarrage de MongoDB: pid = 7271 port = 27017 dbpath = / data / db / 32-bit

** REMARQUE: lorsque vous utilisez MongoDB 32 bits, vous êtes limité à environ 2 gigaoctets 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évrier 08:06:54 db version v1.6.5, version pdfile 4.5
Mer 23 février 08:06:54 version git: 0eb017e9b2828155a67c5612183337b89e12e291
mer février 23 08:06:54 sys info: Linux domU-12-31-39-01 -70-B4 2.6.21.7-2.fc8xen # 1 SMP Ven
15 février 12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
Mer 23 février 08:06:54 [initandlisten] en attente de connexions sur le port 27017
Mer 23 février 08: 06:54 [websvr] interface d'administration Web écoutant 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
Version du shell MongoDB: 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
Version du shell MongoDB: 1.6.5
connexion à: test
mercredi 23 février 08:25:10 Erreur : impossible de se connecter au serveur 127.0.0.1 (anon):
exception 1154 : échec de la connexion

Réponses:


144

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 faire cela, ou tout préfixer avec sudo). Veuillez noter que la commande «grep» apparaîtra toujours comme un processus séparé.

vérifiez le fichier journal /var/log/mongo/mongo.log pour voir s'il y a des problèmes signalés


20
devrait être: service mongodb status
MhdSyrwan

12
Vous pouvez également faire un pgrep mongo.
slm

1
J'ai eu ceci: 501 5365 418 0 4:10 pm ttys000 0: 00.00 grep mongo, cela signifie-t-il qu'il fonctionne?
L1ghtk3ira

1
Le statut du service mongod n'a pas fonctionné pour moi, mais le statut du service mongodb fonctionne.
viks

5
de mongo 2.6 le service est mongod plus tôt son mongodb, confus oui
tsukimi

40

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


6
Vous pouvez également envisager d'ajouter un filtre pour ne pas renvoyer le processus grep que vous exécutez. Donc: ps -ax | grep -v grep | grep mongo
DCaugs

34

Pour vérifier rapidement si mongodb fonctionne, cette astuce nc rapide vous le fera savoir.

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 voudrez peut-être consulter ce fil .


1
Oui, cela fonctionne si vous vérifiez simplement si quelque chose écoute le port. Si tel est le cas, la sortie contiendra 27017 open, ou bien Connection refused.
Alexander


9

Pour vérifier l'état de fonctionnement actuel de mongodb, utilisez: sudo service mongodb status


8

Correct, la fermeture du shell arrêtera MongoDB. Essayez d'utiliser la --forkligne de commande arg pour le processus mongod qui le fait fonctionner comme un démon à la place. 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 le démarrage et l'arrêt de Mongo .


Merci. J'ai eu ceci: [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: 7518mais quand je ferme le shell et en ouvre un nouveau, je reçoisConnect failed

hmm, fonctionne pour moi (Ubuntu 64bit VM, Mongo v1.7.6), donc je ne sais pas pourquoi ce n'est pas pour vous tbh. Si vous ne parvenez pas à le faire fonctionner, le mieux est de le publier sur les forums mongodb
AdaTheDev

Mais j'ai commencé avec &, et maintenant je ne trouve pas le processid.
bobobobo

@bobobobo - comment essayez-vous de trouver l'ID de processus?
Tass le

ps -e | grep mongod
bobobobo

3

Vous pouvez utiliser la commande ci-dessous, pour vérifier l'état de MongoDB, par exemple: sudo service MongoDB statusqui affiche l'état du service MongoDB comme sur la capture d'écran:

Statut MongoDB


2

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


1

Je sais que c'est pour php, mais je suis arrivé ici à la recherche d'une solution pour node. Utilisation de 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
})

Avec d'autres pilotes, vous pouvez essayer d'établir une connexion et en cas d'échec, vous savez que le serveur mongo est en panne. Mongoskin doit réellement passer un appel (comme 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
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.