multiple - mongodb find in array of objects
Está corriendo mongodb? (8)
He instalado mongodb y los controladores php en mi servidor Unix.
Mi pregunta es ¿cómo puedo saber si mongodb se está ejecutando? ¿Hay una consulta de línea de comando simple para verificar el estado? Si lo comienzo una vez desde el shell, seguirá funcionando si salgo del shell (este no parece ser el caso). ¿Cómo puedo hacer que la conexión de mongodb sea persistente y comenzar automáticamente el reinicio del servidor?
Puedo correr:
-bash-3.2 $ su
Contraseña:
[root @ xxx] # cd / var / lib
[root @ xxx] # ./mongodb-linux-i686-1.6.5/bin/mongod
./mongodb-linux-i686-1.6.5/bin/mongod --help para ayuda y opciones de inicio
Mié 23 feb 08:06:54 MongoDB comenzando: pid = 7271 puerto = 27017 dbpath = / data / db / 32-bit** NOTA: cuando usa MongoDB 32 bit, está limitado a aproximadamente 2 gigabytes de datos
** ver http://blog.mongodb.org/post/137788967/32-bit-limitations** ADVERTENCIA: Estás ejecutando OpenVZ. ¡Esto se sabe que está roto!
Mié 23 de feb. 08:06:54 db versión v1.6.5, versión de pdf 4.5
Mié 23 de febrero 08:06:54 versión de git: 0eb017e9b2828155a67c5612183337b89e12e291
Mié 23 feb 08:06:54 info sys: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen # 1 SMP vie
15 de febrero, 12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
Mié 23 feb 08:06:54 [initandlisten] esperando conexiones en el puerto 27017
Mié 23 de febrero 08:06:54 [websvr] interfaz de administración web escuchando en el puerto 28017
Si abro un caparazón separado, puedo conectarme a mongodb:
-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
Versión de shell MongoDB: 1.6.5
conectando a: prueba
db.foo.find ()
{"_id": ObjectId ("4d63d7d3eb95985ab19c8feb"), "a": 1}
Sin embargo, si cierro el shell inicial, no me puedo conectar:
-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
Versión de shell MongoDB: 1.6.5
conectando a: prueba
Mié 23 de febrero 08:25:10 Error: no se pudo conectar al servidor 127.0.0.1 (anon): 1154
excepción: conexión fallida
Correcto, al cerrar el shell se detendrá MongoDB. Intenta usar la línea de comando --fork
arg para el proceso mongod que hace que se ejecute como daemon en su lugar. No soy un gurú de Unix, pero estoy seguro de que debe haber una forma de que comience automáticamente cuando la máquina se inicie.
p.ej
mongod --fork --logpath /var/log/mongodb.log --logappend
Consulte la documentación completa sobre Inicio y detención de Mongo .
Encuentro:
ps -ax | grep mongo
Para ser mucho más consistente. El valor devuelto se puede usar para detectar cuántas instancias de mongod se están ejecutando
Para comprobar rápidamente si mongodb se está ejecutando, este truco nc rápido le hará saber.
nc -zvv localhost 27017
El comando anterior asume que lo está ejecutando en el puerto predeterminado en el host local.
Para iniciarlo automáticamente, es posible que desee ver este hilo .
Para verificar el estado de ejecución actual de mongodb use: sudo service mongodb status
Probablemente porque no cerré mi servidor de desarrollo correctamente o una razón similar. Para solucionarlo, quite el bloqueo e inicie el servidor con: sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb
sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb
Sé que esto es para php, pero llegué aquí buscando una solución para el nodo. Usando 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
})
Con otros controladores, puede intentar establecer una conexión y, si falla, sabrá que el servidor mongo está inactivo. Mongoskin necesita hacer una llamada (como ping) porque se conecta perezosamente. Para php, puede usar el método try-to-connect. ¡Haz un guion!
PHP:
$dbIsRunning = true
try {
$m = new MongoClient(''localhost:27017'');
} catch($e) {
$dbIsRunning = false
}
Verifique con:
ps -edaf | grep mongo | grep -v grep # "ps" flags may differ on your OS
o
/etc/init.d/mongodb status # for MongoDB version < 2.6
/etc/init.d/mongod status # for MongoDB version >= 2.6
o
service mongod status
para ver si mongod se está ejecutando (debe ser root para hacer esto, o prefijar todo con sudo
). Tenga en cuenta que el comando ''grep'' siempre aparecerá también como un proceso separado.
verifique el archivo de registro /var/log/mongo/mongo.log para ver si hay algún problema reportado
esto debería funcionar bien ...
pgrep mongod