Warum kann es nicht über 4096 maximal geöffnete Dateien für Nicht-Root-Benutzer gehen?

12

Ich kann nicht scheinen, das nofile -Grenze für Benutzer ohne Rootberechtigung auf Ubuntu 14.04 zu erhöhen, obwohl ich jede StackExchange-Antwort zu diesem Problem befolge. Bisher habe ich:

$ cat /etc/security/limits.d/custom.conf
@www-data hard nofile 50000
@www-data soft nofile 50000
# even tried specifying the username directly:
myuser hard nofile 50000
myuser soft nofile 50000

$ grep 'limits' /etc/pam.d/common-session*
/etc/pam.d/common-session:session required        pam_limits.so
/etc/pam.d/common-session-noninteractive:session required        pam_limits.so

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

Neustart, eingeloggt und:

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

There still scheint irgendwie ein Limit von 4096 max für Nicht-root-Benutzer zu sein.

    
Caffeine Coma 09.03.2015, 20:30
quelle

3 Antworten

12

Mit Ubuntu 14.04 habe ich das beschriebene harte Limit:

user@notebook:~$ ulimit -Hn 4096  

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

  

Nur root kann das harte Limit erhöhen

Also habe ich versucht, ein höheres Limit in /etc/security/limits.conf wie folgt zu setzen:

user hard nofile 9999 

und eine neue Anmeldung wie ssh localhost -l user gab mir das neue Limit:

user@notebook:~$ ulimit -Hn 9999

Hoffe, das funktioniert auch für Sie.

    
TomTomTom 11.03.2015 00:43
quelle
4

Dieser Artikel , ich denke, adressiert Ihr Problem .

Grundsätzlich sollten Sie den Befehl ulimit verwenden, um die verfügbaren Ressourcen zu erhöhen.

Zum Beispiel:

Verwenden Sie den folgenden Befehlsbefehl, um die maximale Anzahl der geöffneten Dateideskriptoren anzuzeigen:

cat /proc/sys/fs/file-max

Um die harten und weichen Werte anzuzeigen, geben Sie den Befehl wie folgt ein:

# ulimit -Hn
# ulimit -Sn

Um die harten und weichen Werte für httpd oder oracle Benutzer anzuzeigen, geben Sie den Befehl wie folgt ein:

# su - username

Um die Anzahl der maximalen Dateien zu korrigieren, können Sie die maximale Anzahl der geöffneten Dateien erhöhen, indem Sie einen neuen Wert in der Kernel-Variablen / proc / sys / fs / file-max wie folgt eingeben (als Root anmelden):

# sysctl -w fs.file-max=100000

Der obige Befehl erzwingt das Limit auf 100000 Dateien. Sie müssen /etc/sysctl.conf file bearbeiten und die folgende Zeile einfügen, damit die Einstellung nach dem Neustart unverändert bleibt. Fügen Sie dazu eine Konfigurationsanweisung wie folgt an:

fs.file-max = 100000

Speichern und schließen Sie die Datei. Benutzer müssen sich abmelden und erneut anmelden, damit die Änderungen wirksam werden, oder geben Sie einfach den folgenden Befehl ein:

# sysctl -p

Überprüfen Sie Ihre Einstellungen mit dem Befehl:

# cat /proc/sys/fs/file-max

oder:

# sysctl fs.file-max

Die obige Prozedur setzt systemweite Dateideskriptoren (FD) Limits, Sie können jedoch httpd (oder andere Benutzer) auf bestimmte Limits begrenzen, indem Sie /etc/security/limits.conf file bearbeiten, indem Sie /etc/security/limits.conf bearbeiten und die Limits als setzen folgt:

httpd soft nofile 4096
httpd hard nofile 10240

Überprüfen Sie sie dann mit:

# su - httpd
$ ulimit -Hn
$ ulimit -Sn

Wenn Sie das Problem bei anderen Linux-Distributionen haben, überprüfen Sie /etc/pam.d/login und stellen Sie sicher, dass pam_limits.so aktiviert ist, z. B.

session required pam_limits.so
    
Brooke Fogg-Wolfe 09.03.2015 20:37
quelle
0

Wenn es sich um einen Service handelt, können Sie versuchen, das Limit in /etc/systemd/system/{ServiceName}.service add LimitNOFILE=65536

festzulegen     
quelle

Tags und Links