Jak zvýšit limit počtu otevřených souborů v Linuxu

V Linuxu můžete změnit maximální počet otevřených souborů. Tento počet můžete změnit pomocí příkazu ulimit. V tomto krátkém návodu si ukážeme, jak zkontrolovat aktuální limit otevřených souborů a popisů souborů, ale k tomu budete potřebovat root přístup do systému.

Nejprve se podíváme, jak můžeme zjistit maximální počet otevřených popisů souborů ve vašem systému Linux.

Zjistit limit otevřených souborů v Linuxu

Hodnota je uložena v:

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

Číslo, které uvidíte, ukazuje počet souborů, které může mít uživatel otevřeny za jednu přihlašovací relaci. Výsledek se může lišit v závislosti na systému.

Například na mém serveru CentOS byl limit nastaven na 818354, zatímco na serveru Ubuntu, který provozuji doma, byl výchozí limit nastaven na 176772.

Pokud chcete zobrazit tvrdé a měkké limity, můžete použít následující příkazy:

Zkontrolovat tvrdý limit v Linuxu

# ulimit -Hn4096

Zkontrolovat měkké limity v Linuxu

# ulimit -Sn1024

Pro zobrazení tvrdých a měkkých hodnot pro různé uživatele můžete jednoduše přepnout uživatele pomocí „su“ na uživatele, jehož limity chcete zkontrolovat.

Například:

# su marin$ ulimit -Sn1024
$ ulimit -Hn4096

Jak zkontrolovat systémové limity popisovačů souborů v Linuxu

Pokud provozujete server, mohou některé vaše aplikace vyžadovat vyšší limity pro otevřené popisovače souborů. Dobrým příkladem jsou služby MySQL/MariaDB nebo webový server Apache.

Limit otevřených souborů můžete v Linuxu zvýšit úpravou směrnice jádra fs.file-max. K tomuto účelu můžete použít nástroj sysctl.

Sysctl slouží ke konfiguraci parametrů jádra za běhu.

Chcete-li například zvýšit limit otevřených souborů na 500 000, můžete jako root použít následující příkaz:

# sysctl -w fs.file-max=500000

Aktuální hodnotu otevřených souborů můžete zkontrolovat následujícím příkazem:

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

Pomocí výše uvedeného příkazu zůstanou provedené změny aktivní pouze do příštího restartu. Pokud je chcete použít trvale, musíte upravit následující soubor:

# vi /etc/sysctl.conf

Přidejte následující řádek:

fs.file-max=500000

Počet můžete samozřejmě změnit podle svých potřeb. Pro ověření změn opět použijte:

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

Uživatelé se budou muset odhlásit a znovu přihlásit, aby se změny projevily. Pokud chcete limit použít okamžitě, můžete použít následující příkaz:

# sysctl -p

Nastavení limitů otevřených souborů na uživatelské úrovni v Linuxu

Výše uvedené příklady, ukázaly, jak nastavit globální limity, ale můžete chtít použít limity pro jednotlivé uživatele. Za tímto účelem budete muset jako uživatel root upravit následující soubor:

# vi /etc/security/limits.conf

Jste-li správcem systému Linux, doporučuji vám, abyste se s tímto souborem důkladně seznámili a věděli, co s ním můžete dělat. Přečtěte si v něm všechny komentáře, protože poskytuje velkou flexibilitu, pokud jde o správu systémových prostředků omezením uživatelů/skupin na různých úrovních.

Řádky, které byste měli přidat, přebírají následující parametry:

<domain> <type> <item> <value>

Tady je příklad nastavení měkkého a tvrdého limitu pro uživatele marin:

## Example hard limit for max opened filesmarin hard nofile 4096## Example soft limit for max opened filesmarin soft nofile 1024

Myšlenky na závěr

Tento krátký článek vám ukázal základní příklad toho, jak můžete zkontrolovat a nakonfigurovat limity na globální a uživatelské úrovni pro maximální počet otevřených souborů.

Přestože jsme jen poškrábali povrch, vřele vám doporučuji, abyste se podrobněji podívali a přečetli si ohledně souborů /etc/sysctl.conf a /etc/security/limits.conf a naučili se je používat. Jednou vám budou velmi užitečné.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.