今日、サーバーがToo many open files in system:
でクラッシュしましたが、私はすでに高い値がありますが、これの最大値はいくつですか?
これについては、Googleで良い結果が得られていないように感じます。これらの値を設定するために何を考慮する必要があるかを説明し、100kのように設定すると言っているだけです。
現在10GBしか使用していない32GBのRAMサーバーがあります。ファイル制限を非常に高い値に増やすと、RAMの使用量が増えると思います。これを計算するために使用できる式はありますか?8GBのRAMの場合のようにX個のファイルを開くことができますか?
現在の設定:
cat /proc/sys/fs/file-max 100000 ulimit -Hn 1048576 ulimit -Sn 1024
コメント
回答
Kusalanandaが言うように、file-max
はメモリ使用量に直接影響しませんが、プロセスがより多くのファイル記述子を開くことができ、ノックオン効果があります(カーネル内のファイル記述の追跡とメモリの増加の両方から)これらの説明と記述子を使用するプロセスでの使用法)—カーネルのコメントは、カーネルのデータのファイルあたり約1キロバイトを示唆しており、それが終了すると、デフォルト値のfile-max
(8192)が減少します。システムの起動時にメモリの10%以上を表します(つまり RAMは80MiBしかありません)。カーネルによって課される最大値は、アーキテクチャ上のCのタイプlong
の変数に格納できる最大値です。
、inode-max
も増やす必要があります。 カーネルドキュメントには、「stdin、stdout、およびネットワークソケットにもinode構造体が必要なため、これはfile-maxの値の3〜4倍にする必要があります。
file-max
を押すと、「VFS:file-max limit n に到達しました」というカーネルログメッセージが表示されることに注意してください。 」、 n の適切な値。ログにそれがない場合は、file-max
にアクセスしていないか、ログのフィルタリングが多すぎます(情報レベルのログメッセージです)。
(file-max
はCAP_SYS_ADMIN
のプロセスを制限しないため、ヒットしてもすべてが停止するわけではありません。)
コメント
- では、任意の数を増やすことにマイナス面はありませんか? 'システムに
inode-max
が表示されませんか? Ubuntu16.04はこちら。サーバーが再びクラッシュするのを防ぎたいだけです。このサーバーで複数のWebサービスを実行し、'リソースの使用率を気にしません - 欠点はプロセスが暴走することですファイル記述の全体的な制限に巻き込まれることはないため、他の方法でリソースが不足する可能性があります。
ulimit
はプロセスごとのリソース制限を表示/設定します。