ファイル記述子の制限

ファイル記述子の制限

インストールしようとしていますが、389-ds次の警告が表示されます。

WARNING: There are only 1024 file descriptors (hard limit) available, which limit the number of simultaneous connections.

ファイル記述子を理解していますが、ソフトとハードの制限は理解していません。

走ればcat /proc/sys/fs/file-maxまた戻ってくる590432。これは、最大590432個のファイルを開くことができることを意味します(たとえば、最大590432個のファイル記述子があります)。

ただし、実行するとulimit他の結果が表示されます。

$ ulimit
unlimited

$ ulimit -Hn    # Hard limit
4096

$ ulimit -Sn    # Soft limit
1024

しかし、ハード/ソフト制限はどこから来ており、ulimit保存された数字とどのような関係がありますか/proc/sys/fs/file-max

ベストアンサー1

~によるとカーネル文書/proc/sys/fs/file-maxはファイルの最大ファイル数、グローバル数ハンドルカーネルはブロックする前に割り当てます。これは、現在のユーザーの制限ではなく、カーネルの制限です。だからあなたはできるアイドルシステム(シングルユーザーモード、実行中のデーモンなし)に一人でいる場合は、590432を開きます。struct fileカーネルのファイルハンドルはファイル記述子とは異なります。複数のファイル記述子が同じファイルハンドルを指すことができ、ファイルハンドルも存在する可能性があります。いいえ内部的に接続された記述子です。システム全体のファイル記述子の制限はありません。これはプロセスごとにのみ適用できます。

この文書は古いものなので、/proc/sys/fs/file-max長い間使用されてきました。この点を指摘したMartin Jambonに感謝します。

SEで応答するソフト制限とハード制限の違い。ハード制限を超えない限り、通常のユーザーとしてソフト制限を増減できます。ハード制限を下げることもできます(ただし、プロセス中に再度上げることはできません)。スーパーユーザーとして、ハードとソフトの制限を増減できます。デュアル制限スキームはシステムポリシーを実施するために使用されますが、一般ユーザーが自分で一時的な制限を設定し、後で変更することもできます。

ハード制限をソフト制限より下にしようとすると(スーパーユーザーでない場合)、EINVAL無効な引数が返されます。

したがって、あなたの特定の場合ulimit(と同じulimit -Sf)は、あなたが次に興味を持っていることを意味します。シェルとそのサブプロセスで作成されたファイルサイズ。 (ほとんどの場合、これは良い考えです)

その他の通話ulimit -Hnレポートの制限-n(開いているファイル記述子の最大数)、いいえ制限がある-fため、ソフト制限がハード制限より高いようです。入力してもulimit -Hf受け取ることができますunlimited

おすすめ記事