11

自分のサーバーのニーズに応じて、最適なulimitとfs.file-maxの値を「計算」する必要があります。「さまざまなLinuxディストリビューションでこれらの制限を設定する方法」の質問と競合しないでください。

私は尋ねています:

  1. ulimitに使用されるパラメーターを詳細に説明するための良いガイドはありますか?(> 2.6シリーズカーネル)
  2. fs.file-maxの使用状況メトリックを表示するための優れたガイドはありますか?

実際、ネット上で見つけることができる古いリファレンスがいくつかあります。http: //www.faqs.org/docs/securing/chap6sec72.html 「RAM4Mごとに256のような妥当なもの:つまり、128MBのマシンの場合RAMの場合は、8192-128 / 4 = 32 32 * 256=8192"に設定します。

最新のリファレンスをいただければ幸いです。

4

2 に答える 2

15

についてfs.file-maxは、ほとんどの場合、放っておけばよいと思います。なんらかの非常にビジーなサーバーを実行していて、実際にファイル ハンドルが不足している場合は、それを増やすことができますが、増やす必要がある値は、実行しているサーバーの種類と負荷によって異なります。その上です。一般に、ファイル ハンドルが不足しなくなるまで、または負荷を処理するためにより多くのメモリまたはシステムが必要であることに気付くまで、それを増やす必要があります。file-max をデフォルトよりも小さくして「調整」することによるメリットは非常に小さいため、考える価値はありません。私の電話は fs-max 値 83588 で問題なく動作します。

ところで、最新のカーネルはすでに経験則を使用して、システムのメモリ量に基づいて file-max を設定しています。fs/file_table.c2.6 カーネルから:

    /*
     * One file with associated inode and dcache is very roughly 1K.
     * Per default don't use more than 10% of our memory for files. 
     */ 

    n = (mempages * (PAGE_SIZE / 1024)) / 10;
    files_stat.max_files = max_t(unsigned long, n, NR_FILE);

files_stat.max_files設定ですfs.file-max。これは、1MB の RAM ごとに約 100 になります。

もちろん、ulimits は、ユーザーまたはプロセスによって割り当てられるリソースを制限することに関するものです。複数のユーザーがいる場合や、そのような状況の場合は、システム リソースをどのように分割し、メモリ使用量やプロセス数などを制限するかを決めることができます。設定できる制限の詳細についての決定的なガイドは、setrlimit manです。ページ(そしてもちろんカーネル ソース)。

于 2011-05-31T07:14:47.077 に答える
2

通常、Oracle や SAP のような大規模なシステムでは、影響を受けないように非常に高い制限を推奨しています。このアプローチを使用することをお勧めします。データ構造は動的に割り当てられるため、それらを必要としない限り、メモリを使い果たしません。実際にそれらが必要な場合、それらを制限しても役に立ちません。制限に達すると、アプリケーションは通常クラッシュするからです。

fs.file-max = 6815744 # これはおおよそ 70GB RAM システムのデフォルトの制限です

ユーザー rlimits (nofile) についても同様で、65535 を使用します。

両方の推奨事項は、重要なアプリケーションと信頼できるシェル ユーザーがいる専用サーバーにのみ適していることに注意してください。マルチユーザーのインタラクティブ シェル ホストには、制限付きの最大設定が必要です。

于 2014-02-18T02:56:02.183 に答える