Open File Limit kann nicht über 4096 erhöht werden (Ubuntu)

34

Ich bin auf Ubuntu 17.04. Beim Versuch, das Limit für offene Dateien zu erhöhen, funktioniert keine der Anweisungen, die ich online gefunden habe. Ich kann auf 4096 steigen, aber ich kann nicht darüber hinausgehen.

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

Das funktioniert. Das tut nicht:

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

Es scheint an der harten Grenze zu liegen:

$ ulimit -Hn
4096

Ich habe versucht, diese Zeilen zu /etc/security/limits.conf hinzuzufügen:

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

Diese Zeile wurde auch zu /etc/pam.d/common-session und /etc/pam.d/common-session-noninteractive hinzugefügt:

session required pam_limits.so

Seitdem habe ich meinen Computer neu gestartet. Änderungen an der limits.conf scheinen nichts zu bewirken. Das harte Limit liegt immer noch bei 4096 und hindert mich daran, noch weiter zu steigen. Wie erhöhe ich mein Limit für offene Dateien?


Hier sind einige zusätzliche Konfigurationsinformationen:

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

Antworten:

56

OK, ich habe es endlich herausgefunden. Die von mir in /etc/security/limits.conf festgelegten Grenzwerte wurden angewendet, jedoch nicht für die grafische Anmeldung. Dies kann folgendermaßen in einem Terminalfenster überprüft werden:

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

Weitere Nachforschungen führten mich zu diesem Fehlerbericht , der mich in die richtige Richtung führte. Um das Limit zu ändern, das von der Login-Shell verwendet wird, müssen wir /etc/systemd/user.conf die folgende Zeile hinzufügen:

DefaultLimitNOFILE=65535

Diese Änderung funktioniert, wirkt sich jedoch nur auf das Soft-Limit aus. (Damit wir immer noch eine Obergrenze von 4096 haben.) Um auch die Obergrenze zu beeinflussen, müssen wir /etc/systemd/system.conf mit derselben Änderung ändern.

Die Änderungen, die ich in /etc/pam.d vorgenommen habe, waren nicht notwendig. Zumindest unter Ubuntu funktioniert dies bereits. Außerdem war es nicht erforderlich, die Einstellungen für rootund *in der limits.conf zu ändern . Das Ändern der Limits für mkasbergwar zumindest für meinen Anwendungsfall ausreichend.


Zusammenfassend

Wenn Sie das angezeigte Limit erhöhen möchten ulimit -n, sollten Sie:

  • Ändern Sie /etc/systemd/user.conf und /etc/systemd/system.conf mit der folgenden Zeile (dies übernimmt die grafische Anmeldung):

    DefaultLimitNOFILE=65535
    
  • Ändern Sie /etc/security/limits.conf mit den folgenden Zeilen (dies kümmert sich um die Nicht-GUI-Anmeldung):

    mkasberg hard nofile 65535
    mkasberg soft nofile 65535
    
  • Starten Sie Ihren Computer neu, damit die Änderungen wirksam werden.

mkasberg
quelle
2
DefaultLimitNOFILE=65535hat den Trick gemacht. Aber warum /etc/security/limits.conf geht das nicht?
Suvitruf sagt Reinstate Monica
6
Die GUI-Anmeldung verwendet systemd, das anscheinend eine eigene Konfiguration ( /etc/systemd/system.conf) hat, die von der normalen Konfiguration für Terminalsitzungen ( /etc/security/limits.conf) unabhängig ist . Ich weiß nicht genug über systemd, um zu wissen, warum es auf diese Weise implementiert wurde.
mkasberg
1
@Suvitruf, weil es in einem systemd- System ignoriert wird. Ich poste eine Antwort.
Marc.2377,
1
Ich möchte nur darauf hinweisen, dass Grenzwerte für rootBenutzer nicht durch *oder Gruppenbezeichner angegeben werden können. rootLiteral muss explizit angegeben werden.
Petr Javorik
2
Dies funktioniert bei mir nach einem Neustart .
Shihe Zhang
14

Die /etc/security/limits.confDatei muss nicht geändert werden. Sie wird ignoriert, wenn Sie systemd verwenden.

(Wiedergabe einer geänderten Antwort auf eine andere Frage im Netzwerk ...)

Eine Alternative für diejenigen, die den Standard /etc/systemd/system.confund die /etc/systemd/user/confDateien nicht bearbeiten möchten :

  1. erstelle eine neue Datei /etc/systemd/system.conf.d/limits.confmit diesen Inhalten:

    [Manager]
    DefaultLimitNOFILE=65535
    
  2. systemctl daemon-reexecals root ausführen

  3. Abmelden und erneut anmelden

  4. Überprüfen Sie Ihr neues Limit mit ulimit -n.

Weitere Informationen finden Sie auf der systemd-system.confManpage .

Marc.2377
quelle
Auf meinem Ubuntu 18.10-System befindet sich die betreffende Datei unter /etc/systemd/system.conf. Die Änderung dort vorzunehmen scheint den Trick getan zu haben, danke.
Stephen Kennedy
1
Das Abmelden für mich hat nicht funktioniert (Ubuntu 18.04), aber ein Neustart hat den Job erledigt. Sehr elegante Lösung, danke.
stann1
0

Unter Ubuntu 17.04 habe ich das beschriebene Hard Limit bekommen:

[email protected]:~$ ulimit -Hn
4096

Ich könnte es mit senken ulimit, aber nicht erhöhen, so wie die Frage es beschreibt. ulimitHandbuch beschreibt:

nur root kann das hard limit erhöhen.

Also habe ich versucht, ein höheres Limit /etc/security/limits.confwie folgt festzulegen :

user hard nofile 9999

und ein neuer Login wie ssh localhost -l usergab mir das neue Limit:

[email protected]:~$ ulimit -Hn
9999

Ich hoffe, das funktioniert auch für Sie.

Paresh Chauhan
quelle
0
  1. Bearbeiten Sie /etc/systemd/system/sonar.service

  2. Fügen Sie diese beiden Zeilen unter Service hinzu

[Bedienung]

LimitMEMLOCK = unendlich

LimitNOFILE = 65535

  1. systemctl daemon-reload
  2. systemctl Sonar neu starten

das funktioniert bei mir

Matthew Ma
quelle
0

TL; DR Ich hatte das Bedürfnis, die Antworten zu konzentrieren, damit sie leichter zu finden sind. Ich brauchte eine Ewigkeit, um alle Teile zusammenzubringen, damit es richtig funktioniert ...

Es sind 2 Standorte zu berücksichtigen.

  1. GUI-Sitzung

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

    oder besser hier:

    $ grep NOFILE /etc/systemd/system.conf.d/limits.conf
    DefaultLimitNOFILE=65535
    
  2. Shell-Umgebung

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

    oder besser hier:

    $ grep nofile /etc/security/limits.d/user.conf
    user soft nofile 65535
    user hard nofile 65535
    
  3. Nachdem Sie die Einstellungen in den obigen Dateien geändert haben, starten Sie den Computer neu und überprüfen Sie die Grenzwerte mit: ulimit -n -Hn -Sn

UV
quelle