開いているファイルの最大数を「無限」の値に設定することは可能ですか、それとも数値である必要がありますか?
デーモンユーザーの記述子制限を「無制限」に設定する必要があり、それが可能かどうか、またはその方法を判断しようとしています。いくつかのメーリングリストが使用できる「max」値を参照しているのを見てきました(「myuserhard nofile max」のように)が、これまで私が調べたマニュアルページと参照はそれをバックアップしていません。
'max'などを使用できない場合は、ファイルの最大数を(理論的に)決定する方法を知りたいので、選択する数の根拠があります。上限を取得するためのより合理的な方法がある場合は、100000000などを使用したくありません。
重要な場合はRHEL5を使用しています。
更新:質問を書くことに関しては私はばかです。理想的には、limits.confファイル(「max」の由来)でこれを実行したいと思います。それは答えを変えますか?
コメントありがとうございます。これはJBOSSインスタンス用であり、私が作成しているデーモンではないため、setrlimit()が役立つかどうかはわかりません。しかし、Jefromi-私はInfinityの定義が好きです:)ファイル記述子が「2つのショートパンツと1つのポインター」であることを示唆する投稿を見たので、おおよその上限を計算できるはずです。
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カーネルパッチ が適用され、この制限を無限大に設定できるようになりましたが、 意図しない結果の結果として元に戻されました 。
ラインを試してみてください
<domain> -
最も単純なケースでは、<domain>
をユーザー名に置き換えます。
- 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. .