Mohu použít ulimit, ale myslím, že to ovlivní pouze moji Shell session. Chci zvýšit limit pro všechny procesy. Tohle je na Red Hat.
Justinova odpověď vám říká, jak zvýšit počet dostupných otevřených souborů celkem na celý systém. Ale myslím, že se ptáte, jak celosvětově zvýšit limit pro jednoho uživatele. Odpověď na to je přidat následující řádky do /etc/security/limits.conf
:
* soft nofile 2048
* hard nofile 2048
(Pokud * znamená všechny uživatele.)
V samotném souboru a v man limits.conf
Je nějaká souhrnná dokumentace. Toto je implementováno prostřednictvím modulu pam_limits.so
, Který je vyžadován pro různé služby konfigurované v /etc/pam.d/
.
A musím přiznat, že mám bez nápad, odkud vychází výchozí hodnota 1024. A věřte mi, podíval jsem se. Dokonce jsem to zkusil bez nakonfigurovaného modulu pam_limits a stále je tam. Někde to musí být pevně zakódováno, ale nejsem si úplně jistý, kde.
Zvyšte maximální počet ulimit otevřených souborů v Linuxu
1.Step: otevřete sysctl.conf
a přidejte tento řádek fs.file-max = 65536
$ vi /etc/sysctl.conf
přidat nový řádek a
fs.file-max = 65536
uložit a odejít.
2.Step:
$ vi /etc/security/limits.conf
a přidejte níže uvedené
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
uložit a ukončit kontrolu max. otevřeného souboru ulimit
# ulimit -a
....
open files (-n) 65535
Podle článku Linux zvyšuje maximální počet otevřených souborů/deskriptorů souborů (FD) , můžete zvýšit limit otevřených souborů přidáním položky do /etc/sysctl.conf
.
Připojte konfigurační směrnici takto:
fs.file-max = 100000
Poté soubor uložte a zavřete. Uživatelé se musí odhlásit a znovu přihlásit, aby se změny projevily, nebo mohou pouze napsat následující příkaz:
# sysctl -p
Nastavení můžete také ověřit příkazem:
# cat /proc/sys/fs/file-max
Ale pokud se snažíte zvýšit maximální počet otevřených souborů služby , jako je MariaDB nebo něco jiného (pomocí systemd) musíte udělat přímo v souboru .service
/lib/systemd/system/<servicename>.service
Bude to něco takového:
[Unit]
Description=Some Daemon
After=syslog.target network.target
[Service]
Type=notify
LimitNOFILE=49152
ExecStart=/usr/sbin/somedaemon
[Install]
WantedBy=multi-user.target
Úplná odpověď je zde: Zvyšování nproc pro procesy spuštěné systemd na CentOS 7
DOPLNĚNÍ:
Můžete najít config na jiném místě: /etc/security/limits.d/*.conf
Musel jsem to upravit. Bez ní by to nefungovalo. Formát je stejný jako u limits.conf