GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit ulimit a limit deskriptorů souborů na serverech Linux

Úvod:  Výzvy, jako je počet otevřených souborů v jakémkoli produkčním prostředí, se dnes staly běžnými. Protože se mnoho aplikací, které jsou založeny na Javě a Apache, instaluje a konfiguruje, což může vést k příliš velkému počtu otevřených souborů, deskriptorů souborů atd. Pokud to překročí výchozí limit, který je nastaven, může dojít k problémům s řízením přístupu a otevíráním souborů. výzvy. Mnoho produkčních prostředí se kvůli tomu zastaví.

Naštěstí máme „ulimit ” na libovolném serveru založeném na Linuxu, pomocí kterého lze zobrazit/nastavit/získat počet otevřených souborů o stavu/konfiguraci. Tento příkaz je vybaven mnoha možnostmi a touto kombinací lze nastavit počet otevřených souborů. Následují příkazy krok za krokem s podrobně vysvětlenými příklady.

Chcete-li zjistit, jaký je současný limit otevřených souborů v libovolném systému Linux

Chcete-li získat limit otevřených souborů na libovolném serveru Linux, spusťte následující příkaz

[[email protected] ~]# cat /proc/sys/fs/file-max146013

Výše uvedené číslo ukazuje, že uživatel může otevřít soubor „146013“ na relaci přihlášení uživatele.

[[chráněno e-mailem] ~]# kočka /proc/sys/fs/file-max149219[[chráněný e-mail] ~]# kočka /proc/sys/fs/file-max73906

To jasně ukazuje, že jednotlivé operační systémy Linux mají různý počet otevřených souborů. To je založeno na závislostech a aplikacích, které běží v příslušných systémech.

příkaz ulimit:

Jak název napovídá, ulimit (limit uživatele) se používá k zobrazení a nastavení limitu zdrojů pro přihlášeného uživatele. Když spustíme příkaz ulimit s volbou -a, vypíše limit všech zdrojů pro přihlášeného uživatele. Nyní spusťte „ulimit -a ” na systémech Ubuntu / Debian a CentOS,

Systém Ubuntu / Debian ,

[e-mail chráněno] ~}$ ulimit -acore velikost souboru          (bloky, -c) 0 velikost datového segmentu           (kbajty, -d) neomezená priorita plánování              (-e) 0 velikost souboru        )                                      5731Max uzamčená paměť (kbytes, -l) 64Max paměť velikost (kbytes, -m) neomezené soubory (-n) 1024 velikost potrubí (512 bajtů, -p) 8posix zpráv fronty (bytes, -q) ) 0 velikost zásobníku              (kbajty, -s) 8192 cpu čas                (sekundy, -t) neomezený max. počet uživatelských procesů              (-u) 5731 virtuální paměť      nemezený          soubor        

Systém CentOS

[e-mail chráněno] ~}$ ulimit -acore velikost souboru          (bloky, -c) 0 velikost datového segmentu           (kbajty, -d) neomezená priorita plánování              (-e) 0 velikost souboru        )                                      5901Max uzamčená paměť (kbytes, -l) 64Max paměť velikost (kBytes, -m) Neomezené soubory (-N) 1024PIPE Velikost (512 bajtů, -p) 8posixové zprávy o zprávách (Bytes, -q) 0 velikost zásobníku              (kbajty, -s) 8192 cpu čas                (sekundy, -t) neomezený maximální počet uživatelských procesů              (-u) 5901 virtuální paměť                                                     

Jak je zde vidět, různé OS mají nastavené různé limity. Všechny tyto limity lze konfigurovat/změnit pomocí příkazu „ulimit“.

Chcete-li zobrazit limit jednotlivých zdrojů, pak předat individuální parametr v příkazu ulimit, některé parametry jsou uvedeny níže:

  • ulimit -n  –> Zobrazí se limit počtu otevřených souborů
  • ulimit -c –> Zobrazí velikost souboru jádra
  • umilit -u –> Zobrazí maximální limit uživatelských procesů pro přihlášeného uživatele.
  • ulimit -f –> Zobrazí maximální velikost souboru, kterou může uživatel mít.
  • umilit -m –> Zobrazí maximální velikost paměti pro přihlášeného uživatele.
  • ulimit -v –> Zobrazí limit maximální velikosti paměti

Použijte níže uvedené příkazy pro kontrolu pevných a měkkých limitů počtu otevřených souborů pro přihlášeného uživatele

[e-mail chráněný] ~}$ ulimit -Hn1048576[e-mail chráněn] ~}$ ulimit -Sn1024

Jak vyřešit problém, když bylo dosaženo limitu maximálního počtu souborů?

Předpokládejme, že náš linuxový server dosáhl limitu maximálního počtu otevřených souborů a chceme tento limit rozšířit na celý systém, například chceme nastavit 100 000 jako limit počtu otevřených souborů.

Použijte příkaz sysctl k předání parametru fs.file-max jádru za chodu, spusťte pod příkazem jako uživatel root,

[e-mail chráněný]~]# sysctl -w fs.file-max=100000fs.file-max =100000

Výše uvedené změny budou aktivní až do příštího restartu, takže aby tyto změny byly trvalé po restartu, upravte soubor /etc/sysctl.conf a přidejte stejný parametr,

[e-mail chráněný]~]# vi /etc/sysctl.conffs.file-max =100 000

uložit a ukončit soubor,

Spusťte příkaz beneath, aby se výše uvedené změny projevily okamžitě bez odhlášení a restartu.

[e-mail chráněn]~]# sysctl -p

Nyní ověřte, zda jsou nové změny platné či nikoli.

[e-mail chráněný]~]# kočka /proc/sys/fs/file-max100000

Pomocí níže uvedeného příkazu zjistíte, kolik deskriptorů souborů je aktuálně využíváno:

[[email protected] ~]# dalších /proc/sys/fs/file-nr1216 0 100000

Poznámka:- Příkaz „sysctl -p ” se používá k potvrzení změn bez restartu a odhlášení.

Nastavte limit prostředků na úrovni uživatele prostřednictvím souboru limit.conf 

/etc/sysctl.conf ” se používá k nastavení limitu zdrojů v celém systému, ale pokud chcete nastavit limit zdrojů pro konkrétního uživatele, jako je Oracle, MariaDB a Apache, lze toho dosáhnout pomocí „/etc/security/limits.conf “.

Ukázka Limit.conf je uvedena níže,

[e-mail chráněný]~]# kočka /proc/sys/fs/file-max

Předpokládejme, že chceme nastavit pevný a měkký limit počtu otevřených souborů pro uživatele linuxtechi a pro uživatele oracle nastavit pevný a měkký limit počtu otevřených procesů, upravíme soubor „/etc/security/limits.conf“ a přidáme následující řádky

# pevný limit pro maximální počet otevřených souborů pro linuxtechi userlinuxtechi hard nofile 4096# měkký limit pro maximální počet otevřených souborů pro linuxtechi userlinuxtechi soft nofile 1024# pevný limit pro maximální počet procesů pro oracle useroracle tvrdý nproc 8096# měkký limit pro maximální počet proces pro oracle useroracle soft nproc 4096

Uložte a ukončete soubor.

Poznámka: V případě, že chcete omezit zdroje na skupinu namísto uživatelů, pak to může být také možné pomocí souboru limit.conf, místo uživatelského jména napište @ a zbytek položek bude stejný, příklad je uveden níže,

# pevný limit pro maximální počet otevřených souborů pro sysadmin group@sysadmin        hard         nofile            4096 # měkký limit pro maximální počet otevřených souborů pro sysadmin group@sysadmin        soft         4          2     0    2 

Ověřte, zda jsou nové změny platné či nikoli,

~]# su - linuxtechi~]$ ulimit -n -H4096~]$ ulimit -n -S1024~]# su - oracle~]$ ulimit -H -u8096~]$ ulimit -S -u4096

Poznámka:Dalším nejčastěji používaným příkazem je „lsof “, který se používá pro zjištění „kolik souborů je aktuálně otevřeno“. Tento příkaz je velmi užitečný pro administrátory.

Závěr:

Jak bylo zmíněno v úvodní části, příkaz „ulimit“ je velmi výkonný a pomáhá konfigurovat a ujistit se, že instalace aplikací jsou plynulejší bez jakýchkoli překážek. Tento příkaz pomáhá při opravě mnoha omezení počtu souborů na serverech založených na Linuxu.


Linux
  1. Jak nastavit statickou IP adresu a nakonfigurovat síť v Linuxu

  2. Jak nastavit limit velikosti nahrávání souborů v Apache?

  3. Jak připojit a odpojit souborový systém v Linuxu

  1. Jak přesměrovat výstup do souboru a Stdout v Linuxu

  2. Co je NFS a jak jej nainstalovat na Linux

  3. Jak extrahovat soubory .gz a .tar.gz v Linuxu

  1. Jak používat příkaz ulimit Linux

  2. Jak komprimovat a dekomprimovat soubor .bz2 v Linuxu

  3. Jak nastavím šifrovaný odkládací soubor v Linuxu?