Ú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ý souborSysté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 @
# 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 2Ověřte, zda jsou nové změny platné či nikoli,
~]# su - linuxtechi~]$ ulimit -n -H4096~]$ ulimit -n -S1024~]# su - oracle~]$ ulimit -H -u8096~]$ ulimit -S -u4096Pozná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.
Jak nakonfigurovat síťovou kartu označenou VLAN (Ethernet Card) na serverech Linux Jak stáhnout a používat role Ansible Galaxy v Ansible PlaybookLinux