CentOSのmongod
プロセス/ユーザーにulimitを設定するにはどうすればよいですか?
私は 公式ドキュメントを読む をしましたが、OS固有の手順は提供していません。
私はulimit -u 64000
を設定する必要があり、再起動後もこれを維持する必要があります。
CentOS 5.5を実行していますが、間もなく6.5にアップグレードします。
パッケージマネージャーによってインストールされたスクリプトを変更したくない
変更/etc/security/limits.conf
必要なもので。例:
user soft nproc 64000
この行は、プロセッサの数(-u
)「ユーザー」の場合は64000に。ソフト/ハードの制限は同じにすることができます(ソフトはスパイクを許可し、ハードはスポーンを防止します)。
CentOS mongod起動スクリプトの新しいバージョン(/etc/init.d/mongod)には、デフォルト設定が起動オプションに組み込まれています。
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スクリプトに値があるにもかかわらず、なぜそれが必要であったかを誰かが明らかにすることができれば、私はすべて耳になりました!
変更を永続的にするには、たとえばinitスクリプトを編集する必要があります。たとえば、Red Hat 7では、initスクリプトに次の行があります。
LimitNOFILE=64000
次のものを追加する必要があります:
LimitNPROC=32000
その後、サービスを再起動します。
これがお役に立てば幸いです。
/etc/security/limits.conf
ファイルでこの変更を行います。ハードリミットとソフトリミットを設定すれば、問題ありません。