スキップしてコンテンツを表示

Amazon Linux オペレーティングシステムで ulimit 値を設定する方法を教えてください。

所要時間2分
0

Amazon Linux で ulimit 値を設定して、システムリソースのクォータを増やしたいです。

解決策

注: インスタンスとデータのバックアップを維持するのがベストプラクティスです。トラブルシューティングを行う前に、Amazon Elastic Block Store (EBS) を基盤とする Amazon マシンイメージ (AMI) を作成するか、Amazon EBS ボリュームのスナップショットを作成します。

ulimit 値を設定するには、ulimit コマンドを実行するか、システム設定ファイルを変更します。個々のユーザーのシステムリソースクォータを管理するには、ulimit コマンドを実行します。

ulimit コマンドは、以下のシステムクォータを制御します。

  • nofile: 開いているファイル記述子の最大数
  • nproc: 最大プロセス数
  • stack: スタックサイズ
  • core: コアファイルのサイズ
  • memlock: ロックインされたメモリアドレス空間の最大値

システムクォータには、ハードクォータとソフトクォータの 2 種類があります。ソフトクォータは、システムにより適用される現在のクォータです。ソフトクォータを使用すると、ハードクォータに達するまでクォータを増減できます。ハードクォータは、ソフトクォータで増やすことができる最大値です。ルートユーザーのみがハードクォータを増やすことができます。

新しい ulimit 値を設定する前に、次のコマンドを実行してセッションのリソースクォータを確認してください。

ulimit -a
real-time non-blocking time (microseconds, -R) unlimited
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 30446
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 65535
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

注: ハードクォータを調べる場合は、ulimit コマンドの -a-Ha に置き換えます。

一時的な上限値を設定する

現在のシェルセッションに一時的な ulimit 値を設定するには、ulimit コマンドを実行します。-S オプションを使用してソフトクォータを設定し、-H オプションを使用してハードクォータを設定します。たとえば、開いているファイルの最大数を 10000 に変更するには、次のコマンドを実行します。

ulimit -Sn 10000
ulimit -Hn 10000

注: 10000 は、開いているファイルの最大数の目標値に置き換えます。

ルートユーザーの場合は、次のコマンドを実行すると、ulimit nproc 値を一時的に unlimited に設定できます。

ulimit -u unlimited

永続的な上限値を設定する

いずれの再起動でも永続的となる ulimit 値を設定するには、/etc/security/limits.conf ファイルを変更します。

limits.conf のバックアップファイルを、/etc/security/ フォルダ内に limits.conf.bk というファイル名で作成しておくのがベストプラクティスです。バックアップを作成するには、次のコマンドを実行します。

cp /etc/security/limits.conf /etc/security/limits.conf.bk

このファイルをテキストエディタで開き、/etc/security/limits.conf ファイルに次の行を追加します。

username soft nofile 65536
username hard nofile 65536
username soft nproc 4096
username hard nproc 8192

注: username は実際のユーザー名、65536 は開いているファイル最大数の目標値、4096 および 8192 はユーザープロセスの最大数に置き換えます。

これらの数値をすべてのユーザーに適用するには、* を使用します。

* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 8192

変更を適用するには、ログアウトしてから再度ログインします。

ユーザーに対する nproc オープンファイルクォータを確認するには、次のコマンドを実行します。

無制限:

ulimit -u

ソフトクォータ:

ulimit -Sn

ハードクォータ:

ulimit -Hn

永続的な更新として、nproc クォータを unlimited に設定するには、次の設定で /etc/security/limits.conf を更新します。

username soft nproc unlimited
username hard nproc unlimited

注: username は、実際のユーザー名に置き換えます。

ulimit 値のベストプラクティス

ulimit 値を設定する際に、次のベストプラクティスを参照してください。

  • アプリケーションとプロセスの特定の要件に合わせて ulimit 値を設定します。
  • システムのリソース使用量を監視し、必要に応じて ulimit 値を調整します。
  • 新しい ulimit 値を使用してアプリケーションとプロセスをテストし、正しく機能することを確認します。
  • システム全体のクォータを設定するか、特定のユーザクォータを設定するかを確認してから、設定を調整します。

重要: 極端に高い値を設定したり、値を unlimited に設定したりすると、セキュリティと安定性の問題が発生する可能性があります。

関連情報

ulimit 値の設定方法 (Red Hat Enterprise Linux (RHEL) のウェブサイト)

AWS公式更新しました 2年前
コメントはありません