CentOSボックスがあり、ユーザーが開くことができるファイルの最大数を増やしています。現在ulimit -Sn
を実行すると、1024
が得られ、ulimit -Hn
は4096
を返します。その数は6000くらい必要です。
/etc/sysctl.conf
でfs.file-max = 100000
を設定しました。 /etc/security/limits.conf
には、次のセットがあります。
username soft nofile 6000
username hard nofile 65535
ログアウトしてusername
としてログインし直しましたが、まだ変更が表示されません。この値を変更するには何が必要ですか?
/etc/security/limits.d
にあるのは90-nproc.conf
だけです。また、.bash_profileまたは.bashrcでulimitが呼び出されないようにしています。
sysctl -p
を実行すると、必要な設定が出力され、必要なfs.file-max
の値が表示されます。しかし、ulimit -Sn
を実行すると、1048が得られます。sysctl --system
を実行しようとすると、error: Unknown parameter "--system"
が得られます。
/etc/sysctl.conf
を強制的に再度読み取るには、sysctl -p
を実行します。
ファイル/etc/security/limits.conf
はログインシェルによって読み取られ、GUIの場合はアクティブなセッションウィンドウを閉じる必要があります。リモートログインの場合、再ログイン時に有効になります。
別の投稿者が言ったように、実行中のカーネルでsysctlに値を設定させる必要があります。再起動せずに値を設定する方法はいくつかあります。
sysctl -p /etc/sysctl.conf
sysctl -w fs.file-max=100000
sysctl --system
ブート時に設定が適用される順序を複製するため、最後の方法が最善です(したがって、競合がある場合は明らかになります)。
注:使用しているCentOSのバージョンはわかりませんが、少なくとも7では、何らかの理由(新しいカーネルモジュールをインストールするときなど)でdracutがinitramfsを再構築すると、コピーされるという問題が発生しました/etc/sysctl.*の内容をinitramfsに入れます。これは、後で/etc/sysctl.confからこれらのエントリを削除した場合でも、そのフェーズ中にsystemd-sysctlによって実行されます。
私の環境では、systemd dracutモジュールを編集して、その環境から/etc/sysctl.*を除外しました(これらの設定は、rootfsがマウントされ、systemd-sysctlが再度実行されると設定されるため)。それはあなたが遭遇するかもしれない単なる落とし穴です。