/etc/security/limits.conf
には次の行があります
* soft nofile 32768
* hard nofile 65536
root soft nofile 32768
root hard nofile 65536
以下の各ファイルには、pam_limits.so
ファイルが必要です。
/etc/pam.d/common-session
/etc/pam.d/cron
/etc/pam.d/login
/etc/pam.d/sshd
/etc/pam.d/su
/etc/pam.d/Sudo
ログイン時(および起動時に開始されるサービス)のulimit -n
には、1024がまだ表示されます。
何が欠けていますか?
Init.dのサービスの場合、/ etc/security/limits.dを使用できません。inittabがそのファイルを読み取っていないため、初期化起動スクリプトで使用されていないpam.dに基づいています。すべてのinit起動スクリプトは/etc/init.d/functionsをソースとするため、すべてのサービスでそのスクリプトをハックして制限を設定できます。私は{httpd、some brokenass Oracle stuf} e.t.cが必要になったときに、特定のサービスのために/ etc/sysconfigをハッキングするのが常でした。お役に立てれば。
Ubuntu 14.04
Pamがrtprio(-r)とmemlock(-l)の設定を認識できるように、/ etc/security/limits.confに「ハード」と「ソフト」の両方のエントリを追加する必要がありました。
/etc/security/limits.d/
に他の構成ファイルがないことを確認しましたか?
ulimit
で増やしてみましたか?
$ ulimit -n 4096
$ ulimit -n
4096
保存後、再度ログインする必要があります。シェルを開始するだけでは不十分で、ログインシェルでなければなりません。
Rootの場合、以下のコマンドを実行します
ulimit -SHn 65535
特に特定のユーザーに対して永続的に設定する場合は、ファイル/etc/security/limits.confを次の行に変更します(ユーザー= www-dataと想定)。
例えば。
www-data hard nofile 65535
www-data soft nofile 65535
また、/ etc/pam.dの下のさまざまなファイルからpam_limits.soのコメントを外してください。 sudo、login、sshd、...すでに行った上記の手順を実行した後。
最後にシステムを再起動します
/var/log/auth.logを確認してください
そこで問題に対する答えを見つけました。私の場合、デフォルト値(1024)が使用される原因となるエラーのために制限が設定されていません。