web-dev-qa-db-ja.com

Linuxの場合-開いているファイルの最大数を無制限に設定します。可能?

開いているファイルの最大数を「無限」の値に設定することは可能ですか、それとも数値である必要がありますか?

デーモンユーザーの記述子制限を「無制限」に設定する必要があり、それが可能かどうか、またはその方法を判断しようとしています。いくつかのメーリングリストが使用できる「max」値を参照しているのを見てきました(「myuserhard nofile max」のように)が、これまで私が調べたマニュアルページと参照はそれをバックアップしていません。

'max'などを使用できない場合は、ファイルの最大数を(理論的に)決定する方法を知りたいので、選択する数の根拠があります。上限を取得するためのより合理的な方法がある場合は、100000000などを使用したくありません。

重要な場合はRHEL5を使用しています。

更新:質問を書くことに関しては私はばかです。理想的には、limits.confファイル(「max」の由来)でこれを実行したいと思います。それは答えを変えますか?


コメントありがとうございます。これはJBOSSインスタンス用であり、私が作成しているデーモンではないため、setrlimit()が役立つかどうかはわかりません。しかし、Jefromi-私はInfinityの定義が好きです:)ファイル記述子が「2つのショートパンツと1つのポインター」であることを示唆する投稿を見たので、おおよその上限を計算できるはずです。

17
Dave

POSIXでは、 setrlimit() を使用して、RLIMIT_NOFILEリソース制限をRLIM_INFINITYに設定できます。これが意味するのは、システムがこのリソース制限を強制しないということです。もちろん、実装(MAXINTなど)やその他のリソース制限(使用可能なメモリなど)によって制限されます。

更新:RHEL 5の最大値は1048576(220)この制限(NR_OPEN/usr/include/linux/fs.h)の場合、ルートであっても、無限大を含むそれより大きい値は受け入れません。したがって、RHEL 5では、この値を/etc/security/limits.confで使用できます。これは、無限大に到達するのと同じくらい近い値です。

少し前に Linuxカーネルパッチ が適用され、この制限を無限大に設定できるようになりましたが、 意図しない結果の結果として元に戻されました

38
mark4o

ラインを試してみてください

<domain>    -

最も単純なケースでは、<domain>をユーザー名に置き換えます。

limits.confのマニュアルページ は言う

-
    for enforcing both soft and hard resource limits together.

    Note, if you specify a type of '-' but neglect to supply the
    item and value fields then the module will never enforce any
    limits on the specified user/group etc. .
1
serv-inc