4096を超えるオープンファイル制限を増やすことはできません(Ubuntu)


34

Ubuntu 17.04を使用しています。開いているファイルの制限を増やしようとしましたが、オンラインで見つかった指示が機能していません。私は4096まで行くことができますが、それを超えることはできません。

$ ulimit -n
1024
$ ulimit -n 4096
$ ulimit -n
4096

動作します。これはしません:

$ ulimit -n 4097
bash: ulimit: open files: cannot modify limit: Operation not permitted

それはハード制限のためであるように見えます:

$ ulimit -Hn
4096

これらの行を/etc/security/limits.confに追加してみました:

*                hard    nofile          65535
*                soft    nofile          65535
root             soft    nofile          65535
root             hard    nofile          65535

また、この行を/etc/pam.d/common-sessionおよび/etc/pam.d/common-session-noninteractiveに追加しました。

session required pam_limits.so

それ以来、コンピューターを再起動しました。limits.confを変更しても、何の影響もありません。ハード制限はまだ4096のままであり、これ以上高くすることはできません。オープンファイルの制限を増やすにはどうすればよいですか?


追加の構成情報を次に示します。

$ cat /proc/sys/fs/file-max 
1624668

回答:


56

OK、ついにこれを理解しました。/etc/security/limits.confで設定していた制限は適用されていましたが、グラフィカルログインには適用されていませんでした。これは、ターミナルウィンドウから次のように確認できます。

$ ulimit -n
4096
$ su mkasberg
Password:
$ ulimit -n
65535

より多くの研究がこのバグレポートに私を導き、それが私を正しい方向に向けさせました。ログインシェルが使用する制限を変更するには、次の行を/etc/systemd/user.confに追加する必要があります。

DefaultLimitNOFILE=65535

この変更は機能しますが、ソフト制限にのみ影響します。(まだ4096のハード制限で制限されています。)ハード制限にも影響を与えるために、同じ変更で/etc/systemd/system.confを変更する必要があります。

/etc/pam.dで行った変更は必要ありませんでした。少なくともUbuntuでは、これはすでに機能しています。また、ために、設定を変更する必要はありませんでしたrootし、*limits.confをして。mkasberg少なくとも私のユースケースでは、の制限を変更するだけで十分でした。


要約すれば

で示される制限を増やしたい場合はulimit -n、次のことを行う必要があります。

  • /etc/systemd/user.confおよび/etc/systemd/system.confを次の行で変更します(これにより、グラフィカルログインが処理されます)。

    DefaultLimitNOFILE=65535
    
  • /etc/security/limits.confを次の行で変更します(これにより、非GUIログインが処理されます)。

    mkasberg hard nofile 65535
    mkasberg soft nofile 65535
    
  • コンピュータを再起動して、変更を有効にします。


2
DefaultLimitNOFILE=65535トリックをしました。しかし、なぜ/etc/security/limits.conf 機能しないのですか?
Suvitrufは回復モニカは述べています

6
GUIログインはsystemdを使用しますが、明らかにsystemdには、/etc/systemd/system.confターミナルセッションの通常の構成()とは独立した独自の構成()があります/etc/security/limits.conf。systemdについては、なぜこのように実装されたのかを知るのに十分な知識がありません。
mkasberg

1
systemdシステムでは無視されるため、@ Suvitruf 。回答を投稿しています。
Marc.2377

1
rootユーザーの制限は、*またはグループ指定子では指定できないことを指摘したいだけです。rootリテラルは明示的に指定する必要があります。
ペトルジャボリック

2
これは、再起動後に機能します。
Shihe Zhang

14

/etc/security/limits.confファイルを変更する必要はありません。systemdを使用している場合は無視されます。

(ネットワーク上の別の質問に対する修正された答えを再現する...)

デフォルト/etc/systemd/system.conf/etc/systemd/user/confファイルを編集したくない人のための代替:

  1. /etc/systemd/system.conf.d/limits.conf次の内容の新しいファイルを作成します。

    [Manager]
    DefaultLimitNOFILE=65535
    
  2. systemctl daemon-reexecルートとして実行

  3. ログアウトして再度ログインする

  4. で新しい制限を確認してくださいulimit -n

詳細については、systemd-system.confマンページを参照してください。


私のUbuntu 18.10システムでは、問題のファイルはにあり/etc/systemd/system.confます。そこに変更を加えることは、トリックを行ったように見えます、ありがとう。
スティーブンケネディ

1
私のためにログアウトするだけでは機能しませんでした(Ubuntu 18.04)が、再起動すればうまくいきました。非常にエレガントなソリューション、ありがとう。
stann1

0

Ubuntu 17.04を使用すると、説明されているハード制限があります:

user@paresh.com:~$ ulimit -Hn
4096

を使用して値を下げることはできますがulimit、質問で説明されているように値を上げることはできません。ulimitマニュアルの説明:

rootのみがハード制限を増やすことができます。

だから私は/etc/security/limits.confこのように高い制限を設定しようとしました:

user hard nofile 9999

のような新しいログインssh localhost -l userは私に新しい制限を与えました:

user@paresh.com:~$ ulimit -Hn
9999

これがあなたにも役立つことを願っています。


0
  1. /etc/systemd/system/sonar.serviceを編集します

  2. これらの2行をサービスの下に追加します

[サービス]

LimitMEMLOCK = infinity

LimitNOFILE = 65535

  1. systemctl daemon-reload
  2. systemctl restart sonar

これは私のために働く。


0

TL; DR答えを集中する必要があると感じたので、答えを見つけやすくなりました。それを正しく動作させるためにすべてのピースを一緒に取得するために年齢をかけて...

考慮すべき2つの場所があります。

  1. GUIセッション

    $ grep DefaultLimitNOFILE /etc/systemd/system.conf
    DefaultLimitNOFILE=65535
    

    またはここでより良い:

    $ grep NOFILE /etc/systemd/system.conf.d/limits.conf
    DefaultLimitNOFILE=65535
    
  2. シェル環境

    $ grep nofile /etc/security/limits.conf
    user soft nofile 65535
    user hard nofile 65535`
    

    またはここでより良い:

    $ grep nofile /etc/security/limits.d/user.conf
    user soft nofile 65535
    user hard nofile 65535
    
  3. 上記のファイルの設定を変更した後、再起動してから制限を確認します。 ulimit -n -Hn -Sn

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.