mongod fork vs nohup

4

Atualmente, estou escrevendo um software de gerenciamento de processos. Um pacote que usamos é mongo.

Existe alguma diferença entre o lançamento do mongo com

mongod --fork --logpath=/my/path/mongo.log --logappend

e

nohup mongod >> /my/path/mongo.log 2>&1 < /dev/null &

?

Meu primeiro pensamento foi que --fork poderia gerar mais processos e / ou threads, e foi sugerido que --fork poderia ser útil para mudar o usuário efetivo (privilégios de downgrade). Mas nós rodamos todos sob o mesmo usuário (gerenciador de processo e mongod), então existe alguma outra diferença?

Obrigado

    
por Daniel Kitachewsky 06.07.2012 / 16:55

2 respostas

5

A diferença é que com

mongod --fork --logpath=/my/path/mongo.log

O próprio Mongo bifurca o processo para que possa ser executado como um deamon. Este é o caminho pretendido porque o mongo provavelmente faria algo antes de bifurcar o novo processo.

com

nohup mongod >> /my/path/mongo.log 2>&1 < /dev/null &

Mongo não sabe que é bifurcado.

Eu diria que é sempre melhor permitir que o software do servidor faça a criação de blocos para que ele possa fazer otimizações. NoHUP é apenas para software que não possui uma opção de bifurcação.

    
por 06.07.2012 / 17:19
4
Concordo em geral com a resposta de Christopher P (e votei em cima), mas para falar um pouco mais sobre a opção de registro aqui. Uma varredura inicial dos exemplos que você deu sugeriria que você acabaria com melhores opções de registro com a versão nohup que a versão --fork. Se você começou com:

mongod --fork --logpath=/my/path/mongo.log --logappend

Então, você teria uma correspondência mais próxima. Também oferece a opção de girar os arquivos de log com facilidade (por meio de um sinal ou comando):

link

Caso contrário, você precisaria gerenciar tudo sozinho e o processo vai pensar que está fazendo o logout para stdout em vez de para um arquivo.

Não é exatamente o que você estava perguntando, mas mais algumas evidências em favor do --fork.

    
por 06.07.2012 / 19:20

Tags