Chyba "Too many open files" na systému CentOS 7 je běžným problémem, který nastává, když aplikace nebo proces překročí limit nastavený pro maximální počet otevřených souborových deskriptorů. Tento článek poskytuje podrobný návod, jak tento problém identifikovat a následně opravit.
Příčiny chyby
Chyba "Too many open files" signalizuje, že proces v operačním systému se pokusil otevřít více souborů, než je povoleno systémovým limitem. Každý soubor, který proces otevírá (včetně knihoven, soketů a dalších I/O zdrojů), používá souborový deskriptor. Limit pro otevřené souborové deskriptory je zaveden k ochraně systémových zdrojů.
Identifikace problému
Nejprve je třeba zjistit, který proces způsobuje chybu. To lze provést pomocí příkazu lsof
nebo ps
, které ukáží aktuálně otevřené soubory nebo běžící procesy.
Zvýšení limitu otevřených souborů
-
Dočasné zvýšení limitu
Pro dočasné zvýšení limitu otevřených souborů pro daný proces lze použít příkazy ulimit
. Například, pro zvýšení limitu na 20480 otevřených souborů pro aktuální shell, použijte:
ulimit -n 20480
Tato změna platí pouze pro aktuální shell a zaniká po jeho uzavření.
-
Trvalé zvýšení limitu
Pro trvalé změny je potřeba upravit konfigurační soubory:
a. Editace /etc/security/limits.conf
Otevřete soubor /etc/security/limits.conf
v textovém editoru a přidejte následující řádky, které zvýší limit pro všechny uživatele:
* soft nofile 20480
* hard nofile 40960
b. Editace /etc/sysctl.conf
Pro zvýšení limitu na úrovni systému otevřete /etc/sysctl.conf
a přidejte:
fs.file-max = 2097152
Po provedení změn v souboru /etc/sysctl.conf
je nutné aplikovat změny pomocí příkazu:
sysctl -p
-
Aplikace změn
Po úpravách konfiguračních souborů je doporučeno restartovat systém nebo alespoň dotčené služby, aby se nové limity projevily.
Chyba "Too many open files" je často způsobena nedostatečně nastavenými limitními hodnotami pro otevřené soubory v systému. Správným nastavením těchto limitů lze problém efektivně vyřešit a zvýšit tak stabilitu a výkon aplikací běžících na CentOS 7. Je však důležité si uvědomit, že příliš vysoké limity mohou mít negativní dopad na systémové zdroje, a proto by měly být nastaveny s ohledem na dostupné zdroje a potřeby aplikací.