web-dev-qa-db-ja.com

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

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
29
mkasberg

さて、私はついにこれを考え出しました。 /etc/security/limits.confに設定した制限は適用されていましたが、グラフィカルログインには適用されていませんでした。これは端末ウィンドウから次のように確認できます。

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

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

DefaultLimitNOFILE=65535

この変更は機能しますが、ソフトリミットにのみ影響します。ハードリミットにも影響を与えるためには、同じ変更で/etc/systemd/system.confを修正しなければなりません。

/etc/pam.dに行った変更は必要ありませんでした。少なくともUbuntuでは、これはすでに機能しています。また、limits.confのroot*の設定を変更する必要もありませんでした。少なくとも私のユースケースでは、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
    
  • 変更を有効にするためにコンピュータを再起動します。

47
mkasberg

/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. rootとしてsystemctl daemon-reexecを実行します。

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

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

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

10
Marc.2377

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

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

  1. GUIセッション

grep DefaultLimitNOFILE /etc/systemd/system.conf

DefaultLimitNOFILE=65535

またはここでより良い:

grep NOFILE /etc/systemd/system.conf.d/limits.conf

DefaultLimitNOFILE=65535

  1. シェル環境

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

  1. 再起動して確認:ulimit -n -Hn -Sn
0
U.V.

Ubuntu 17.04を使うと、私は説明したような厳しい制限を受けました。

[email protected]:~$ ulimit -Hn
4096

私はulimitを使ってそれを下げることができましたが、質問がそれを記述しているようにそれを増やすことはできません。 ulimitマニュアルの説明:

rootだけがhard limitを増やすことができます。

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

user hard nofile 9999

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

[email protected]:~$ ulimit -Hn
9999

私はこれがあなたにとってもうまくいくことを願っています。

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

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

[サービス]

LimitMEMLOCK = infinity

LimitNOFILE = 65535

  1. systemctl daemon-reload
  2. systemctl restart sonar

これは私のために働く。

0
Matthew Ma