Linuxサーバーでulimitとファイル記述子の制限を設定する方法

はじめに:本番環境のいずれかで開いているファイルの数などの課題は、今日一般的 JavaベースとApacheベースの多くのアプリケーションがインストールされ、構成されているため、開いているファイルやファイル記述子などが多すぎる可能性があ これが設定されているデフォルトの制限を超えると、アクセス制御の問題やファイルを開く際の課題に直面する可能性があります。 多くの生産環境は、このための状況のようなものを停止するようになります。幸いなことに、Linuxベースのサーバーのいずれかに”ulimit”コマンドがあり、ファイルの数を開く/設定する/取得することができますステータス/構成の詳細。 このコマンドには多くのオプションが装備されており、この組み合わせで開いているファイルの数を設定できます。 以下は、詳細に説明された例とステップバイステップのコマンドです。

任意のLinuxシステムで現在のオープンファイルの制限が何であるかを確認するには

任意のLinuxサーバーでオープンファイルの制限を取得するには、次のコマンドを実行します。

# cat /proc/sys/fs/file-max146013

上記の数字は、ユーザーがユーザーログインセッションごとに’146013’ファイルを開くことができることを示しています。

# cat /proc/sys/fs/file-max149219# cat /proc/sys/fs/file-max73906

これは、個々のLinuxオペレーティングシステムが開いているファイルの数が異なることを明確に示しています。 これは、それぞれのシステムで実行されている依存関係とアプリケーションに基づいています。

ulimitコマンド :名前が示すように、ulimit(ユーザー制限)は、ログインしたユーザーのリソース制限を表示および設定するために使用されます。-Aオプションを指定してulimitコマンドを実行すると、ログインしているユーザーのすべてのリソースの制限が表示されます。 ここで、Ubuntu/DebianおよびCentOSシステムで”ulimit-a”を実行してみましょう。

Ubuntu/Debianシステム、

shashi@Ubuntu ~}$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 5731max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024 pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 5731virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited

CentOSシステム

shashi@centos ~}$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 5901max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 5901virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited

ここで見られるように、異なるOSには異なる制限が設定されています。 これらの制限はすべて、”ulimit”コマンドを使用して設定/変更できます。

個々のリソースの制限を表示し、ulimitコマンドで個々のパラメータを渡すには、パラメータのいくつかを以下に示します。

  • ulimit-n–>開いているフumilit-u–>ログインしたユーザーの最大ユーザープロセス制限が表示されます。
  • ulimit-f–>ユーザーが持つことができる最大ファイルサイズが表示されます。
  • umilit-m–>ログインしたユーザーの最大メモリサイズが表示されます。
  • ulimit-v->最大メモリサイズの制限が表示されます

以下のコマンドを使用して、ログインしたユーザーの開いているファイルの数のハードとソフトの制限を確認してください

shashi@Ubuntu ~}$ ulimit -Hn1048576shashi@Ubuntu ~}$ ulimit -Sn1024

最大ファイル数の制限に達したときに問題を修正する方法は?

Linuxサーバーが開いているファイルの最大数の制限に達し、その制限をシステム全体に拡張したいと仮定しましょう。fsを渡すにはsysctlコマンドを使用します。file-maxパラメータをカーネルにオンザフライで実行し、rootユーザーとしてコマンドの下で実行し、

root@ubuntu~]# sysctl -w fs.file-max=100000fs.file-max = 100000

上記の変更は次の再起動までアクティブになconfと同じパラメータを追加し、

root@ubuntu~]# vi /etc/sysctl.conffs.file-max = 100000

ファイルを保存して終了し、

下のコマンドを実行して、ログアウトして再起動せずに上記の変更をすぐに新しい変更が有効かどうかを確認します。

root@ubuntu~]# sysctl -p

新しい変更が有効かどうかを確認します。

root@ubuntu~]# cat /proc/sys/fs/file-max100000

現在使用されているファイル記述子の数を調べるには、以下のコマンドを使用します。

# more /proc/sys/fs/file-nr1216 0 100000

注:-Command”sysctl-p”は、再起動とログアウト

limitを使用してユーザーレベルのリソース制限を設定します。confファイル

“/etc/sysctl.conf”ファイルはシステム全体のリソース制限を設定するために使用されますが、Oracle、MariaDB、Apacheなどの特定のユーザーにリソース制限を設定したい場合は、”/etc/security/limits”で実現conf”ファイル。

サンプルの制限。confを以下に示します,

root@ubuntu~]# cat /proc/sys/fs/file-max

Limits-conf-linux-part1

Limits-conf-linux-part2

linuxtechiユーザーとユーザーのために開いているファイルの数にハードとソフトの制限を設定したいとしましょう。oracleユーザーがオープンプロセスの数にハード制限とソフト制限を設定する場合は、ファイル”/etc/security/limits.conf”と次の行を追加します

# hard limit for max opened files for linuxtechi userlinuxtechi hard nofile 4096# soft limit for max opened files for linuxtechi userlinuxtechi soft nofile 1024# hard limit for max number of process for oracle useroracle hard nproc 8096# soft limit for max number of process for oracle useroracle soft nproc 4096

保存&ファイルを終了します。

注意: ユーザーではなくグループにリソース制限を設定する場合は、limitを使用することもできます。ユーザー名の代わりにconfファイルを入力し、@<Group_Name>

# hard limit for max opened files for sysadmin group@sysadmin hard nofile 4096 # soft limit for max opened files for sysadmin group@sysadmin soft nofile 1024

新しい変更が有効かどうかを確認します。

~]# su - linuxtechi~]$ ulimit -n -H4096~]$ ulimit -n -S1024~]# su - oracle~]$ ulimit -H -u8096~]$ ulimit -S -u4096

注:他の主に使用されるコマンドは”lsof”であり、”現在開かれているファイルの数”を調べるために使用されます。 このコマンドは管理者にとって非常に便利です。

結論:

はじめにセクションで述べたように、”ulimit”コマンドは非常に強力であり、ボトルネックなしでアプリケーションのインストールを設定してスムーズに このコマンドは、Linuxベースのサーバーのファイル制限の数の多くを修正するのに役立ちます。

コメントを残す

メールアドレスが公開されることはありません。