web-dev-qa-db-ja.com

mongodのulimitsを設定するにはどうすればよいですか?

CentOSのmongodプロセス/ユーザーにulimitを設定するにはどうすればよいですか?

私は 公式ドキュメントを読む をしましたが、OS固有の手順は提供していません。

  • 私はulimit -u 64000を設定する必要があり、再起動後もこれを維持する必要があります。

  • CentOS 5.5を実行していますが、間もなく6.5にアップグレードします。

  • パッケージマネージャーによってインストールされたスクリプトを変更したくない

8
Tim

変更/etc/security/limits.conf必要なもので。例:

user soft nproc 64000

この行は、プロセッサの数(-u)「ユーザー」の場合は64000に。ソフト/ハードの制限は同じにすることができます(ソフトはスパイクを許可し、ハードはスポーンを防止します)。

11
Nathan C

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を変更します。

7
thaspius

タスピウスの答えに追加すると、彼は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スクリプトに値があるにもかかわらず、なぜそれが必要であったかを誰かが明らかにすることができれば、私はすべて耳になりました!

6
user2050789

変更を永続的にするには、たとえばinitスクリプトを編集する必要があります。たとえば、Red Hat 7では、initスクリプトに次の行があります。

LimitNOFILE=64000

次のものを追加する必要があります:

LimitNPROC=32000

その後、サービスを再起動します。

これがお役に立てば幸いです。

/etc/security/limits.confファイルでこの変更を行います。ハードリミットとソフトリミットを設定すれば、問題ありません。

1
John