O mongodb está funcionando?


117

Eu instalei o mongodb e os drivers php no meu servidor unix.

Minha pergunta é como posso saber se o mongodb está em execução? Existe uma consulta de linha de comando simples para verificar o status? Se eu iniciá-lo uma vez a partir do shell, ele continuará em execução se eu sair do shell (não parece ser o caso). Como posso tornar a conexão mongodb persistente e iniciar automaticamente na reinicialização do servidor?

Eu posso correr:

-bash-3.2 $ su
Senha:
[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 ajuda e opções de inicialização
Quarta, 23 de fevereiro, 08:06:54 MongoDB iniciando: pid = 7271 port = 27017 dbpath = / data / db / 32-bit

** NOTA: ao usar MongoDB de 32 bits, você está limitado a cerca de 2 gigabytes de dados
** consulte http://blog.mongodb.org/post/137788967/32-bit-limitations

** AVISO: Você está executando em OpenVZ. Isso é conhecido por estar quebrado !!!

Quarta, 23 de fevereiro 08:06:54 db versão v1.6.5, pdfile versão 4.5
Quarta, 23 de fevereiro 08:06:54 git version: 0eb017e9b2828155a67c5612183337b89e12e291
Quarta, 23 de fevereiro 08:06:54 sys info: Linux domU-12-31-39-01 -70-B4 2.6.21.7-2.fc8xen # 1 SMP Sex.
15 de fevereiro 12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
Quarta, 23 de fevereiro 08:06:54 [initandlisten] aguardando conexões na porta 27017
Quarta, 23 de fevereiro 08: 06:54 [websvr] interface de administração da web ouvindo na porta 28017

Se eu abrir um shell separado, posso me conectar ao mongodb:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDB versão do shell: 1.6.5
conectando-se a: test
db.foo.find ()
{" _id ": ObjectId (" 4d63d7d3eb95985ab19c8feb ")," a ": 1}

No entanto, se eu fechar o shell inicial, não consigo conectar:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDB versão do shell: 1.6.5
conectando-se a: teste
Quarta, 23 de fevereiro 08:25:10 Erro : não foi possível conectar ao servidor 127.0.0.1 (anon): 1154
exceção: a conexão falhou

Respostas:


144

verifique com:

   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

para ver se o mongod está rodando (você precisa ser root para fazer isso, ou prefixar tudo com sudo). Observe que o comando 'grep' sempre aparecerá como um processo separado.

verifique o arquivo de log /var/log/mongo/mongo.log para ver se há algum problema relatado


20
deveria ser: service mongodb status
MhdSyrwan 02 de

12
Você também pode fazer um pgrep mongo.
slm de

1
Eu entendi: 501 5365 418 0 4:10 pm ttys000 0: 00.00 grep mongo, isso significa que ele está em execução?
L1ghtk3ira

1
O status do serviço mongod não funcionou para mim, mas o status do serviço mongodb está funcionando.
viks

5
do mongo 2.6 o serviço é mongod antes de seu mongodb, confuso sim
tsukimi

40

Eu acho:

ps -ax | grep mongo

Para ser muito mais consistente. O valor retornado pode ser usado para detectar quantas instâncias de mongod estão em execução


6
Além disso, você pode querer considerar a adição de um filtro para não retornar o processo grep que você está executando. Portanto: ps -ax | grep -v grep | grep mongo
DCaugs

34

Para verificar rapidamente se o mongodb está em execução, este truque rápido do nc permitirá que você saiba.

nc -zvv localhost 27017

O comando acima assume que você o está executando na porta padrão do host local.

Para iniciá-lo automaticamente, você pode querer dar uma olhada neste tópico .


1
Sim, funciona apenas para verificar se algo está escutando a porta. Se for esse o caso, a saída conterá 27017 open, ou então Connection refused.
Alexander


9

Para verificar o status de execução atual do uso do mongodb: sudo service mongodb status


8

Correto, fechar o shell irá parar o MongoDB. Tente usar o --forkargumento da linha de comando para o processo mongod que o faz rodar como um daemon. Não sou um guru do Unix, mas tenho certeza de que deve haver uma maneira de fazê-lo iniciar automaticamente quando a máquina for inicializada.

por exemplo

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

Verifique a documentação completa sobre como iniciar e parar o Mongo .


Obrigado. Eu entendi: [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: 7518mas ainda quando fecho o shell e abro um novo, receboConnect failed

hmm, funciona para mim (Ubuntu 64bit VM, Mongo v1.7.6), então não tenho certeza porque não é para você tbh. Se você não conseguir fazer funcionar, a melhor aposta pode ser postá-lo nos fóruns mongodb: groups.google.com/group/mongodb-user
AdaTheDev

Mas comecei com &, e agora não consigo encontrar o ID do processo.
bobobobo

@bobobobo - como você está tentando encontrar o ID do processo?
Tass

ps -e | grep mongod
bobobobo

3

Você pode usar o comando abaixo para verificar o status do MongoDB, por exemplo: sudo service MongoDB statusque exibe o status do serviço MongoDB como na imagem:

Status do MongoDB


2

Provavelmente porque não desliguei meu servidor de desenvolvimento corretamente ou por um motivo semelhante. Para consertar, remova o bloqueio e inicie o servidor com: sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb


1

Eu sei que isso é para php, mas cheguei aqui procurando uma solução para node. 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
})

Com outros drivers, você pode tentar fazer uma conexão e, se falhar, você sabe que o servidor mongo está inativo. O Mongoskin precisa realmente fazer alguma chamada (como ping) porque ele se conecta lentamente. Para php, você pode usar o método try-to-connect. Faça um script!

PHP:

$dbIsRunning = true
try {
  $m = new MongoClient('localhost:27017');
} catch($e) {
  $dbIsRunning = false
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.