Linuxのファイルディスクリプタファイル/etc/security/limits.confを
どのようなファイルディスクリプタ?そして、ファイルには、違いは何でしょうハンドル?
ファイルディスクリプタは、システム固有の概念を操作するLINUX / UNIXです。ファイルハンドルウィンドウシステムに相当します。別の名前を意味。
プロセスがファイルを開くたび、Linuxシステムでは、システムは、ファイルを識別する固有の整数のファイル記述子を割り当てます。標準C各プロセスSTDIN、スタウト、sterr、3つの構造は、それぞれ説明する3つの文書に対応することを示すためにファイルポインタ構造のそれぞれデフォルト、標準入力、標準出力および標準誤差によってオープン3つのファイルが、ありますフー0,1,2。
ファイルディスクリプタは、プロセス、開いているファイルやソケットを示すために使用され、それぞれが単純な整数、です。最初の開いているファイルは、第二のように1であり、そして、0です。Linuxオペレーティングシステムは、通常は開くことができるプロセスリットルあたりのファイル数に制限があります。
リミットLinuxシステムは、ファイル記述子の2つのレベルがあり
システムレベル:猫を/ proc / sys / fs /使用してファイルを-maxのビューを、デフォルト値は、システムが自動的に設定され、メモリサイズに基づいており、メモリ通常サイズの10%の(KB)、シェルを算出することができるgrep -r MemTotal /proc/meminfo | awk '{printf("%d",$2/10)}'
(様々ながあるかもしれませんファイルマックスの他の原因は)メモリの10%に設定されていません
ユーザレベル:デフォルトは1024で、-nビューをulimitを使用して
なぜオープン・ファイル記述子の限界?
理由1 - リソースの問題:各オープンファイルには、メモリ管理を消費する必要がありますし、メモリが限られています。
2原因 - セキュリティ上の問題を:あなたはそれを制限しない場合は、新しいファイルを無制限に作成して開くためのプロセスを開始するには、妊娠中の善意の人々が存在しない、サーバがクラッシュします。
Linuxシステムの安定性は非常に重要であるためので、ファイル記述子の数を制限します。
プロファイル
プロファイルがあるリソースの使用を制限 /etc/security/limits.conf
し、/etc/security/limits.d/
ディレクトリ、/etc/security/limits.d/
コンフィギュレーションカバーする/etc/security/limits.conf
構成にします
次のようにリソースタイプを制限することができます。
作成されたカーネルファイルのサイズ、プロセスデータ・ブロックのサイズ、シェルプロセスのファイルサイズを作成するために、ロックされたメモリのサイズ、永久メモリーのサイズを設定し、最大スタックサイズを割り当てられたオープンファイル記述子の数、CPU時間、スレッドの最大数単一ユーザ、使用可能な最大仮想メモリシェルプロセス。同時に、それはハードとソフトのリソースリソースの制限をサポートしています。
-
最初の列は、ユーザーグループと(最初の@)を示しています。2番目の列はソフト制限またはハード制限を表し、第3列は、リソースの制約のタイプを示し、第4列は、上限を表します
-
ハードとソフトとの間の差:柔らかい警告値であるが、ハード実センス閾値で、エラーが通常の状況が同じ値に設定されている下に、上であろう。
-
コアカーネルファイル、NOFILEファイルディスクリプタで、noprocは、ファイル記述子の数と十分なプロセスの数を制限する通常の状況下では、プロセスであり、
<項目> <値> <種類の>#<ドメイン> # # *ソフトコア 0 #rootハードコア 100000 # *ハードRSS 10000 学生ハードNPROC @# 20 学部ソフトNPROC @# 20 #学部ハードNPROC @ 50 #ftpハードNPROC 0 #ftp - chroot環境/ FTP #1 @学生 - MAXLOGINS 4 ファイルの#終わりが -----------テンプレートコンフィギュレーションファイルの上、次のように自分自身を追加し、ラインを分割------ ------------------ ソフトNOFILE * 655350 ファイルのいずれかの最大数は、ユーザのディスクリプタ表現する#を開くことができる NOFILE *ハード 655350 *ソフトNPROC 655350 #は、ユーザが任意の開くことができるプロセスの最大数を示し、 *ハードNPROC 655350 @studentハードNOFILE 65535 #student基オープン・ファイル記述子の数にすべての人までは65535である、と警告するとき65000が開放される ソフトNOFILE @student 65000 ハードNPROC @student 50 誰#studentグループが50の以上のプロセスを持つことができない、となります30個のプロセスがある警告 @studentソフトNPROC 30を
システムレベル
1つのビュー
$猫を/ proc / sys / fs /ファイル- 最大 186405
2、セット
一時的
$エコー1000000 >を/ proc / sys / fs /ファイル-MAXを
永久に
/etc/sysctl.confの中に設定し、それがベストプラクティスであるものの値を設定する必要がありますか?例えば、メモリの8Gは、2分の8192 * 256 = 524288を設定します
fs.file-MAX = 1000000
ユーザーレベル
1、閲覧、-nデフォルトのビューではソフトリミット、からの値である/etc/security/limits.conf
ファイル* soft nofile 655350
には、
$のulimitの- nは 170000
ハードリミットを見ます
$ ulimitの-Hn 170000
2、セット
一時的な:
ほとんどのソフトリミット-snのulimitを設定することで、ソフト制限に注意を払うより少ないハードリミットである必要があります
$ ulimitの-Sn 160000
ulimitの-Hn最もハードリミットを設定することで
$ ulimitの-Hn 160000
ソフトリミットとハードリミットの両方を設定してください。root以外のユーザーの場合のみ、オリジナルのハード制限よりも小さく設定することができます。
-nのulimit 180000
常設:
root権限で、有効にするには再起動し、*はすべてのユーザーを意味し/etc/security/limits.confを、以下の2行を追加します
*ソフトNOFILE 102400 *ハードNOFILE 104800
注:注意することがNOFILEもう一つのポイントを設定し、ハードリミットはハードリミットはハードリミットがnr_openより大きい場合、キャンセルはログインしていないだろう、を/ proc / sys / fs / nr_openを超えることはできませんです。
ファイル記述子の現在の数が開い表示
現在の配信システムが使用されており、第二の数がこの値に割り当てた後(未使用カーネルバージョン2.6を示した後の最初の数は、ファイル記述子の数を表し、これは、それが意味している、間違いないが、常に0であります常に使用するファイル記述子)を割り当てることが、第3の数は、最大ファイル-MAXに等しいです。
$ sudoの猫を/ proc / sys / fs /ファイル- NR 2176 0 2048000
開いているファイルの数がプロセスをディスクリプタ見ます
$ lsofを-p 20262 |トイレ- lの 5
どのプロセスがシーケンスのために配置され、より占有ファイルディスクリプタを、見て
[ルート@ MASTER1]〜$ lsofを-n | awkの' {$ 10を印刷} ' |並べ替え| uniqの-c |ソート-nr |ヘッド- 10 2367 838 ソケット 703の/ dev / nullに 658 パイプ 599 [eventpoll] 533 [のeventfd] 495 / 183 (ESTABLISHED) 178 プロトコル: 175は/ usr / binに/ containerd、シム
https://blog.csdn.net/cywosp/article/details/38965239
https://www.cnblogs.com/fsw-blog/p/4543914.html
http://www.bidutools.com/?p=914
https://jameswxx.iteye.com/blog/2096461