今日、サーバーが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 

コメント

  • 答えではありませんが、開いているファイルの最大数を制限することは、RAMを節約する方法ではなく、ディスクI / Oのパフォーマンスを節約する方法であると思います。多数の開いているファイルを許可することは、(潜在的に)多数の同時を許可することを意味します。ディスクアクセス。また、システム全体の全体的な制限とプロセスごとの制限がある可能性があります。Linuxユーザーではないため、'について詳しく説明することはできません。それ以外はulimitはプロセスごとのリソース制限を表示/設定します。
  • これはSSDディスクの懸念事項でもありますか? 'はサーバーであり、'死んでもかまいません。ホスティング会社がサーバーを交換するだけで、バックアップがあります。また、ネットワークソケットもこの問題を引き起こす可能性があることを読みました。私は、主にパフォーマンスに関心があります。 'パフォーマンスが向上している限り、100%または5%を使用する場合、ハードウェアの料金を支払います。なぜ気にするのですか?クラウドサーバーの場合はこの問題が発生する可能性がありますが、専用ハードウェアの場合は実際にはそうではありません
  • はい、開いているソケットの数もこの制限にカウントされます(一般にファイル記述子を開きます)。私はそれを忘れました。したがって、RAMが唯一の懸念事項である場合、'制限を増やすことについて心配する必要はないと思います。ただし、提供するサービス割り当てを開始することを意味する場合を除きます。開いている各ソケットに関連するi>追加メモリ。これはあなただけが調査できるものです。

回答

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-maxCAP_SYS_ADMINのプロセスを制限しないため、ヒットしてもすべてが停止するわけではありません。)

コメント

  • では、任意の数を増やすことにマイナス面はありませんか? 'システムにinode-maxが表示されませんか? Ubuntu16.04はこちら。サーバーが再びクラッシュするのを防ぎたいだけです。このサーバーで複数のWebサービスを実行し、'リソースの使用率を気にしません
  • 欠点はプロセスが暴走することですファイル記述の全体的な制限に巻き込まれることはないため、他の方法でリソースが不足する可能性があります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です