web-dev-qa-db-ja.com

mongodフォークvsnohup

私は現在、プロセス管理ソフトウェアを書いています。私たちが使用するパッケージの1つはmongoです。

モンゴを起動することとの間に違いはありますか

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

そして

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

私が最初に考えたのは、-forkがより多くのプロセスやスレッドを生成できることであり、-forkが有効なユーザーの変更(特権のダウングレード)に役立つ可能性があることを示唆しました。しかし、すべて同じユーザー(プロセスマネージャーとmongod)で実行しているので、他に違いはありますか?

ありがとうございました

4

違いは

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

Mongo自体がプロセスをフォークするため、デーモンとして実行できます。 mongoはおそらく新しいプロセスをフォークする前に何かをする可能性があるため、これは意図された方法です。

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

Mongoはそれがフォークされていることを知りません。

最適化を行えるように、サーバーソフトウェアにフォークを実行させる方が常に良いと思います。 Nohupは、フォークオプションがないソフトウェア専用です。

5

私はクリストファーPの答えに概ね同意します(そしてそれを投票しました)が、ここでロギングオプションについてもう少し話します。あなたが与えた例の最初のスキャンは、あなたが--forkバージョンよりもNohupバージョンでより良いロギングオプションで終わることを示唆するでしょう。代わりにあなたが始めた場合:

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

次に、より近い一致があります。また、(シグナルまたはコマンドを介して)ログファイルを非常に簡単にローテーションするオプションも提供します。

http://www.mongodb.org/display/DOCS/Logging#Logging-Rotatingthelogfiles

それ以外の場合は、すべて自分で管理する必要があり、プロセスは、ファイルではなくstdoutにログを記録していると見なします。

正確にはあなたが求めていたものではありませんが、-forkを支持するいくつかの証拠があります。

4
Adam C