/etc/pam.d/login
というpamモジュールを呼び出して検証を行います。/etc/pam.d/login
の設定において、デフォルトではsystem-auth
モジュールをインポートして認証を行い、system-auth
モジュールはデフォルトでpam_limits.so
モジュールをインポートして認証を行います。system-auth
のデフォルト設定は下図のとおりです。
pam_limits.so
モジュールの主な機能はユーザーのセッションの過程で各種システムリソースの使用状況を制限することです。デフォルトではこのモジュールの設定ファイルは/etc/security/limits.conf
であり、この設定ファイルはユーザーが使用可能な最大ファイル数、最大スレッド数、最大メモリなどのリソース使用量を規定しています。パラメータの説明は下表のとおりです。パラメータ | 説明 |
soft nofile | 開くことができるファイルディスクリプタの最大数(ソフトリミット)。 |
hard nofile | 開くことができるファイルディスクリプタの最大数(ハードリミット)。この設定値を超えることはできません。 |
fs.file-max | システムクラスにおいて開くことができるファイルハンドラ(カーネル中のstruct file)の数量。システム全体に対する制限であり、ユーザーに対してのものではありません。 |
fs.nr_open | 1つのプロセスで割り当て可能な最大ファイルディスクリプタ数(fd個数)。 |
/etc/security/limits.conf
中のrootユーザーが開くことのできるファイルディスクリプタの最大数の設定にエラーがあることによる可能性があります。 正しい設定はsoft nofile ≤ hard nofile ≤ fs.nr_open
の関係を満たしていなければなりません。soft nofile
、hard nofile
およびfs.nr_open
の値がsoft nofile ≤ hard nofile ≤ fs.nr_open
の関係を満たしているかどうかを確認します。soft nofile
およびhard nofile
の値を確認します。/etc/security/limits.conf
fs.nr_open
の値を確認します。sysctl -a 2>/dev/null | grep -Ei "file-max|nr_open"
/etc/security/limits.conf
ファイルを修正し、次の設定をファイルの末尾に追加または修正します。root soft nofile
:100001root hard nofile
:100002/etc/sysctl.conf
ファイルを修正し、次の設定をファイルの末尾に追加または修正します。soft nofile ≤ hard nofile ≤ fs.nr_open
の関係を満たしている場合は、この手順は必須ではありません。システムの最大制限が不足している場合に再調整することができます。fs.file-max
= 2000000fs.nr_open
= 2000000sysctl -p
この記事はお役に立ちましたか?