web-dev-qa-db-ja.com

CentOSでのulimitの増加

CentOSボックスがあり、ユーザーが開くことができるファイルの最大数を増やしています。現在ulimit -Snを実行すると、1024が得られ、ulimit -Hn4096を返します。その数は6000くらい必要です。

/etc/sysctl.conffs.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"が得られます。

19
tubaguy50035

/etc/sysctl.confを強制的に再度読み取るには、sysctl -pを実行します。

ファイル/etc/security/limits.confはログインシェルによって読み取られ、GUIの場合はアクティブなセッションウィンドウを閉じる必要があります。リモートログインの場合、再ログイン時に有効になります。

14
Xavier Lucas

別の投稿者が言ったように、実行中のカーネルで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が再度実行されると設定されるため)。それはあなたが遭遇するかもしれない単なる落とし穴です。

6
Boscoe