はじめに: 実稼働環境で開いているファイルの数などの課題は、今日では一般的になっています。 JavaベースおよびApacheベースの多くのアプリケーションがインストールおよび構成されているため、開いているファイルやファイル記述子などが多すぎる可能性があります。これが設定されているデフォルトの制限を超えると、アクセス制御の問題やファイルのオープンに直面する可能性があります。課題。このため、多くの本番環境は停止するような状況になります。
幸い、「 ulimit」があります Linuxベースのサーバーのいずれかで「」コマンドを実行します。これにより、開いているファイルの数/構成の詳細を表示/設定/取得できます。このコマンドには多くのオプションがあり、この組み合わせで開いているファイルの数を設定できます。以下は、例を詳細に説明したステップバイステップのコマンドです。
Linuxシステムで現在開いているファイルの制限を確認するには
Linuxサーバーでオープンファイルの制限を取得するには、次のコマンドを実行します。
[[email protected]〜]#cat / proc / sys / fs / file-max146013
上記の数値は、ユーザーがユーザーログインセッションごとに「146013」ファイルを開くことができることを示しています。
[[email protected]〜]#cat / proc / sys / fs / file-max149219 [[email protected]〜]#cat / proc / sys / fs / file-max73906
これは、個々のLinuxオペレーティングシステムで開いているファイルの数が異なることを明確に示しています。これは、それぞれのシステムで実行されている依存関係とアプリケーションに基づいています。
ulimitコマンド:
名前が示すように、ulimit(ユーザー制限)は、ログインしたユーザーのリソース制限を表示および設定するために使用されます。-aオプションを指定してulimitコマンドを実行すると、ログインしたユーザーのすべてのリソースの制限が出力されます。それでは、「 ulimit -a」を実行してみましょう 」Ubuntu/DebianおよびCentOSシステムの場合
Ubuntu/Debianシステム 、
[email protected]〜} $ ulimit -acore file size(blocks、-c)0data seg size(kbytes、-d)unlimitedscheduling priority priority(-e) 5731maxロックメモリ(kbytes、-l)64maxメモリサイズ(kbytes、-m)無制限に開くファイル(-n)1024 )0スタックサイズ(キロバイト、-s)8192cpu時間(秒、-t)unlimitedmaxユーザープロセス(-u)5731仮想メモリx)無制限のファイルCentOSシステム
[email protected]〜} $ ulimit -acore file size(blocks、-c)0data seg size(kbytes、-d)unlimitedscheduling priority priority(-e) 5901maxロックメモリ(kbytes、-l)64maxメモリサイズ(kbytes、-m)unlimitedopen files(-n)1024pipe size(-n)1024pipe size 0スタックサイズ(キロバイト、-s)8192cpu時間(秒、-t)unlimitedmaxユーザープロセス(-u)5901仮想メモリx無制限(kbytes、-v)無制限のファイルロックここでわかるように、OSが異なれば制限も異なります。これらの制限はすべて、「ulimit」コマンドを使用して構成/変更できます。
個々のリソース制限を表示してから、ulimitコマンドで個々のパラメーターを渡すには、いくつかのパラメーターを以下に示します。
- ulimit -n –>開いているファイルの数の制限が表示されます
- ulimit -c –>コアファイルのサイズを表示します
- umilit -u –>ログインしたユーザーの最大ユーザープロセス制限が表示されます。
- ulimit -f –>ユーザーが使用できる最大ファイルサイズが表示されます。
- umilit -m –>ログインしているユーザーの最大メモリサイズが表示されます。
- ulimit -v –>最大メモリサイズ制限が表示されます
以下のコマンドを使用して、ログインしているユーザーの開いているファイルの数のハード制限とソフト制限を確認します
[メール保護]〜} $ ulimit -Hn1048576 [メール保護]〜} $ ulimit -Sn1024
最大ファイル数の制限に達したときに問題を修正するにはどうすればよいですか?
Linuxサーバーが開いているファイルの最大数の制限に達し、その制限をシステム全体に拡張したいとします。たとえば、開いているファイルの数の制限として100000を設定します。
sysctlコマンドを使用してfs.file-maxパラメーターをカーネルにオンザフライで渡し、rootユーザーとしてコマンドの下で実行します。
[email protected]〜]#sysctl -w fs.file-max =100000fs.file-max =100000
上記の変更は次の再起動まで有効になるため、これらの変更を再起動後も保持するには、ファイル /etc/sysctl.confを編集します。 同じパラメータを追加します
[メール保護]〜]#vi /etc/sysctl.conffs.file-max =100000
ファイルを保存して終了します
以下のコマンドを実行して、ログアウトして再起動せずに、上記の変更をすぐに有効にします。
[メール保護]〜]#sysctl -p
次に、新しい変更が有効かどうかを確認します。
[メール保護]〜]#cat / proc / sys / fs / file-max100000
以下のコマンドを使用して、現在使用されているファイル記述子の数を確認します。
[[email protected]〜]#more / proc / sys / fs / file-nr1216 0 100000
注:-コマンド「 sysctl-p 」は、再起動およびログアウトせずに変更をコミットするために使用されます。
limit.confファイルを使用してユーザーレベルのリソース制限を設定します
「/etc/sysctl.conf 」ファイルは、システム全体のリソース制限を設定するために使用されますが、Oracle、MariaDB、Apacheなどの特定のユーザーにリソース制限を設定する場合は、「 /etc/security/limits.conf」を使用して設定できます。 」ファイル。
Limit.confのサンプルを以下に示します
[メール保護]〜]#cat / proc / sys / fs / file-max
linuxtechiユーザーのオープンファイル数にハード制限とソフト制限を設定し、oracleユーザーのオープンプロセス数にハード制限とソフト制限を設定し、ファイル「/etc/security/limits.conf」を編集して以下を追加するとします。行
#linuxtechiの最大オープンファイルのハード制限userlinuxtechi hard nofile 4096#linuxtechiの最大オープンファイルのソフト制限userlinuxtechi soft nofile 1024#oracleuseroracleの最大プロセス数のハード制限hardnproc 8096#最大数のソフト制限oracle useroracle softnproc4096のプロセス
ファイルを保存して終了します。
注: ユーザーではなくグループにリソース制限を設定する場合は、ユーザー名の代わりにlimit.confファイルを使用して、 @
#sysadmin group@sysadminの最大オープンファイルのハード制限hardnofile4096#sysadmin group@sysadminの最大オープンファイルのソフト制限softnofile>1024新しい変更が有効かどうかを確認します。
〜]#su --linuxtechi〜] $ ulimit -n -H4096〜] $ ulimit -n -S1024〜]#su --oracle〜] $ ulimit -H -u8096〜] $ ulimit -S -u4096>注:その他の主に使用されるコマンドは「 lsof 」は、「現在開いているファイルの数」を調べるために使用されます。このコマンドは、管理者にとって非常に役立ちます。
結論:
はじめにのセクションで述べたように、「ulimit」コマンドは非常に強力であり、アプリケーションのインストールをボトルネックなしでスムーズに構成および確認するのに役立ちます。このコマンドは、Linuxベースのサーバーでのファイル制限の多くを修正するのに役立ちます。
Linux