Úvod: Výzvy, jako je počet otevřených souborů v jakémkoli produkčním prostředí se stalo běžnou teď den. Vzhledem k tomu, že mnoho aplikací založených na Javě a Apache se instaluje a konfiguruje, což může vést k příliš mnoha otevřeným souborům, deskriptorům souborů atd. Pokud toto překročí výchozí limit, který je nastaven, může se jednat o problémy s řízením přístupu a problémy s otevíráním souborů. Mnoho výrobních prostředí se kvůli tomu zastaví.
Naštěstí, máme „ulimit“ příkaz v kterémkoli z Linuxu na serveru, pomocí níž lze zobrazit/nastavit/získat počet souborů otevřených stav/podrobnosti o konfiguraci. Tento příkaz je vybaven mnoha možnostmi a pomocí této kombinace lze nastavit počet otevřených souborů. Následují podrobné příkazy s příklady podrobně vysvětlenými.
vidět, co je přítomen otevřít soubor s příponou limit v každém Linuxovém Systému,
otevřít soubor limit na každém Linuxovém serveru, spusťte následující příkaz,
# cat /proc/sys/fs/file-max146013
výše uvedené číslo ukazuje, že uživatel může otevřít ‚146013‘ soubor na uživatele přihlašovací relace.
# cat /proc/sys/fs/file-max149219# cat /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é jsou spuštěny v příslušných systémech.
příkaz ulimit :
jak již název napovídá, ulimit (user limit) slouží k zobrazení a nastavení limitu prostředků pro přihlášeného uživatele.Když spustíme příkaz ulimit s volbou-a, vytiskne limit všech zdrojů pro přihlášeného uživatele. Teď pojďme spustit „ulimit -“ na Ubuntu / Debian a CentOS systémy,
Ubuntu / Debian Systém,
shashi@Ubuntu ~}$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 5731max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024 pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 5731virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited
CentOS Systému,
shashi@centos ~}$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 5901max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 5901virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited
Jak můžeme vidět zde různé OS mají různé limity nastavit. Všechny tyto limity lze nakonfigurovat / změnit pomocí příkazu „ulimit“.
Na zobrazení jednotlivých zdrojů limit pak projít individuální parametr v příkazu ulimit, některé z parametrů jsou uvedeny níže:
- ulimit -n –> zobrazí počet otevřených souborů limit
- ulimit -c –> displej velikost základní soubor
- umilit -u –> To se zobrazí maximální uživatelský proces limit 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í maximální velikost paměti limit
Použijte níže uvedené příkazy zkontrolovat tvrdé a měkké limity pro počet otevřených souborů pro přihlášeného uživatele
shashi@Ubuntu ~}$ ulimit -Hn1048576shashi@Ubuntu ~}$ ulimit -Sn1024
Jak opravit problém, když limit na Maximální počet Souborů bylo dosaženo ?
předpokládejme, že náš server Linux dosáhl limitu maximální počet otevřených souborů a chcete rozšířit, že limit celého systému, například chceme nastavit 100000 jako limit počtu otevřených souborů.
použijte příkaz sysctl k předání fs.file-max parametr jádra za běhu, spustit pod příkaz jako uživatel root,
root@ubuntu~]# sysctl -w fs.file-max=100000fs.file-max = 100000
Výše uvedené změny budou aktivní až do dalšího restartu, tak, aby se tyto změny trvalé po restartu, upravte soubor /etc/sysctl.conf a přidat stejný parametr,
root@ubuntu~]# vi /etc/sysctl.conffs.file-max = 100000
uložte a ukončete soubor,
Spustit pod příkaz, aby se výše uvedené změny v platnost ihned bez odhlášení a restartujte počítač.
root@ubuntu~]# sysctl -p
nyní ověřte, zda jsou nové změny platné nebo ne.
root@ubuntu~]# cat /proc/sys/fs/file-max100000
Použijte níže uvedený příkaz, aby zjistili, jak mnoho popisovačů souboru jsou v současné době využívány:
# more /proc/sys/fs/file-nr1216 0 100000
na Vědomí:- Příkaz „sysctl -p“ se používá k potvrzení změny bez restartu a odhlášení.
nastavte limit prostředků na úrovni uživatele pomocí limitu.soubor conf
„/etc/sysctl.conf“ soubor je používán pro nastavení limitu prostředků systému široká, ale pokud chcete nastavit zdroj omezení pro konkrétního uživatele, jako jsou Oracle, MariaDB a Apache pak to může být dosaženo prostřednictvím „/etc/security/limits.soubor conf.
limit vzorku.conf je uvedeno níže,
root@ubuntu~]# cat /proc/sys/fs/file-max
Předpokládejme, že chceme nastavit hard a soft limit na počet otevřených souborů pro linuxtechi uživatele a pro uživatele oracle nastavit hard a soft limit na počet otevřených procesu, upravit soubor „/etc/security/limits.conf „a přidejte následující řádky
# hard limit for max opened files for linuxtechi userlinuxtechi hard nofile 4096# soft limit for max opened files for linuxtechi userlinuxtechi soft nofile 1024# hard limit for max number of process for oracle useroracle hard nproc 8096# soft limit for max number of process for oracle useroracle soft nproc 4096
Uložit & ukončete soubor.
Poznámka: V případě, že chcete dát limit zdrojů na skupinu místo uživatelů, pak to může být také možné přes limit.conf, v místě, uživatelské jméno , zadejte @<Group_Name> a zbytek položky budou stejné, níže je uveden příklad,
# hard limit for max opened files for sysadmin group@sysadmin hard nofile 4096 # soft limit for max opened files for sysadmin group@sysadmin soft nofile 1024
Ověřte, zda nové změny jsou platné, nebo ne,
~]# su - linuxtechi~]$ ulimit -n -H4096~]$ ulimit -n -S1024~]# su - oracle~]$ ulimit -H -u8096~]$ ulimit -S -u4096
Poznámka: Další majorly používá příkaz „lsof“, který se používá pro zjištění „kolik soubory jsou otevřeny v současné době“. Tento příkaz je velmi užitečný pro administrátory.
závěr:
jak je uvedeno v úvodní části „ulimit“ příkaz je velmi silný a pomáhá jeden konfigurovat a ujistěte se, že instalace aplikací jsou plynulejší bez úzkých míst. Tento příkaz pomáhá při opravě mnoha omezení souborů na serverech založených na Linuxu.