回答:
CentOS mongod起動スクリプトの新しいバージョン(/etc/init.d/mongod)には、デフォルト設定がstartオプションに組み込まれています。
start()
{
# Recommended ulimit values for mongod or mongos
# See http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
#
ulimit -f unlimited
ulimit -t unlimited
ulimit -v unlimited
ulimit -n 64000
ulimit -m unlimited
ulimit -u 32000
echo -n $"Starting mongod: "
daemon --user "$MONGO_USER" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/mongod
}
値を変更してスクリプトを変更しない場合は、スクリプトを/etc/init.d/mongod-customにコピーしてから、カスタムinitスクリプトを編集し、値を設定して、mongodではなくmongod-customを使用するようにchkconfigを変更します。
タスピウスの答えに追加すると、彼はinitスクリプトで説明しているように制限が設定されているようですが、私はまだ警告を受けていました
[initandlisten] ** WARNING: soft rlimits too low. rlimits set to 1024 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.
これは、initスクリプトで定義されたファイル制限が有効になったが、プロセス制限は有効にならなかったことを示唆しているようです。また、ネイサンCの答えに従って追加
mongod soft nproc 64000
/etc/security/limits.d/90-nproc.conf
システムを再起動すると問題が解決しました。
mongodb initスクリプトに値があるにもかかわらず、なぜそれが必要であったのかを誰かが明らかにすることができれば、私はすべて耳にしています!
/etc/security/limits.conf
ファイルにこの変更を加えます。ハードリミットとソフトリミットを設定すれば、問題ありません。
/etc/security/limits.d/
いじるのではなく、内部でファイルを使用することをお勧めしますlimits.conf
変更を永続的にするには、たとえば、Red Hat 7では、initスクリプトを編集する必要があります。initスクリプトには次の行があります。
LimitNOFILE=64000
次のものを追加する必要があります:
LimitNPROC=32000
その後、サービスを再起動します。
これがお役に立てば幸いです。
cat /proc/{pid}/limits
を再起動しても、変化はありません。confが確実に読み込まれるようにするために、何か追加の処理が必要ですか?