Nedokážu přijít na to, co přesně je potřeba k tomu, aby bylo možné trvale zvýšit maximální počet deskriptorů souborů pro všechny uživatele.
/etc/security/limits.conf
:
root hard nofile 1500000
root soft nofile 1000000
root hard nproc 15000
root soft nproc 10000
* hard nofile 1500000
* soft nofile 1000000
* hard nproc 15000
* soft nproc 10000
Následující text jsem umístil do /etc/pam.d/common-session
:
session required pam_limits.so
Po restartu se přihlaste jako libovolný uživatel a zadejte ulimit -n
výsledkem je 1024
.
Poté jsem zkusil vyžadovat pam_limits.so
do každého souboru pod /etc/pam.d
. Restartováno. Přihlášeno. Žádné takové štěstí.
Pokud zadám příkaz ulimit -n 1000000
, pak zkontrolujte, limit je nastaven podle očekávání. Takže jsem umístil @reboot ulimit -n 1000000
do crontab -e
. Restartováno. Přihlášeno. Žádné štěstí.
Zkontroloval jsem /etc/ssh/sshd_config
a PAM je povoleno.
Zkoušel jsem nastavit limity při každém restartu pomocí:
/sbin/sysctl -w fs.file-max=1000000
/sbin/sysctl -p
Žádné štěstí.
Mám server, který má spoustu souběžného provozu a potřebuji tyto limity tak vysoké, protože serveru trvá velmi dlouho, než vymaže deskriptory souborů. Co musím udělat, abych trvale zvýšil limit deskriptoru souboru?
Přijatá odpověď:
Tímto způsobem jsem zvýšil počet limitů souborů pro všechny (segment z /etc/security/limits.conf
):
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files (Doug: - so Samba will not complain)
* - nofile 16384
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
To bylo na serveru 12.04. Testoval jsem však 100 000 na svém serveru 14.04 a fungovalo to dobře. (Edit:také zkontrolováno 20.04.)
~/config/security$ ulimit -n
16384
EDIT:Pro většinu aplikací to stačí, ale nemění to výchozí hodnotu pro root:
# ulimit -n
1024
Pokud je také potřeba změnit číslo pro root, pak (2020.09.04 – nyní používám 131 072):
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open file descriptors
* - nofile 131072
root - nofile 131072
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
A tak:
$ sudo su
# ulimit -n
131072