Košík je prázdný

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ů

  1. 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í.

  2. 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
    
  3. 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í.