Johdanto: haasteet kuten avointen tiedostojen määrä missä tahansa tuotantoympäristössä on yleistynyt nyt päivässä. Koska monet sovellukset, jotka ovat Java-pohjaisia ja Apache-pohjaisia, asennetaan ja konfiguroidaan,mikä voi johtaa liian moniin avoimiin tiedostoihin, tiedostokuvaajiin jne. Jos tämä ylittää asetetun oletusrajan, voi edessä olla kulunvalvontaongelmia ja tiedostojen avaamishaasteita. Monet tuotantoympäristöt seisahtuvat tämän vuoksi.
onneksi meillä on ”ulimit” – komento missä tahansa Linux-pohjaisessa palvelimessa, josta näkee/set/get number of files open status / configuration details. Tämä komento on varustettu monilla valinnoilla ja tällä yhdistelmällä voidaan asettaa avointen tiedostojen määrä. Seuraavat ovat askel-askeleelta komentoja esimerkkejä selitetty yksityiskohtaisesti.
nähdäksesi, mikä on nykyinen avoimen tiedoston raja missä tahansa Linux-järjestelmässä
saadaksesi avoimen tiedostorajan mille tahansa Linux-palvelimelle, suorita seuraava komento,
# cat /proc/sys/fs/file-max146013
yllä oleva numero osoittaa, että käyttäjä voi avata ”146013” – tiedoston per käyttäjän kirjautumisistunto.
# cat /proc/sys/fs/file-max149219# cat /proc/sys/fs/file-max73906
tämä osoittaa selvästi, että yksittäisissä Linux-käyttöjärjestelmissä on eri määrä avoimia tiedostoja. Tämä perustuu riippuvuuksiin ja sovelluksiin, jotka ovat käynnissä vastaavissa järjestelmissä.
ulimitin komento :
kuten nimestä voi päätellä, ulimia (user limit) käytetään kirjautuneen käyttäjän resurssirajan näyttämiseen ja asettamiseen.Kun suoritamme ulimit-komennon-a-vaihtoehdolla, se tulostaa kaikkien resurssien rajan kirjautuneelle käyttäjälle. Nyt ajetaan” ulimit-a”Ubuntu / Debian-ja CentOS-järjestelmissä,
Ubuntu / Debian-järjestelmä,
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-järjestelmä
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
kuten tässä näkyy, eri käyttöjärjestelmillä on erilaiset rajat. Kaikki nämä rajat voidaan määrittää / muuttaa komennolla ”ulimit”.
näyttääkseen yksittäisen resurssirajan ja siirtääkseen sitten yksittäisen parametrin ulimit-komennossa, osa parametreista on lueteltu alla:
- ulimit –n- > se näyttää avoimien tiedostojen määrän raja
- ulimit –C- > se näyttää ydintiedoston koon
- umilit –u – > se näyttää kirjautuneen käyttäjän enimmäiskäyttöprosessirajan.
- ulimit-f –> se näyttää suurimman tiedostokoon, joka käyttäjällä voi olla.
- umilit-m –> se näyttää kirjautuneen käyttäjän muistin enimmäiskoon.
- ulimit-v –> se näyttää muistin enimmäiskoon rajan
käytä alla olevia komentoja tarkista kovat ja pehmeät rajat avoimen tiedoston määrälle kirjautuneelle käyttäjälle
shashi@Ubuntu ~}$ ulimit -Hn1048576shashi@Ubuntu ~}$ ulimit -Sn1024
miten korjata ongelma, kun Maksimitiedostojen määrän raja saavutettiin ?
oletetaan, että Linux-palvelimemme on saavuttanut avoimien tiedostojen enimmäismäärän rajan ja haluamme laajentaa tätä rajajärjestelmää laajalle, esimerkiksi haluamme asettaa 100000 avoimien tiedostojen määrän rajoitukseksi.
käytä sysctl-komentoa FS: n siirtämiseen.file-max parametri ytimen lennossa, suorita alla komento pääkäyttäjänä,
root@ubuntu~]# sysctl -w fs.file-max=100000fs.file-max = 100000
yllä olevat muutokset ovat aktiivisia seuraavaan uudelleenkäynnistykseen asti, joten jotta nämä muutokset pysyvät koko uudelleenkäynnistyksen ajan, Muokkaa tiedostoa/etc / sysctl.conf ja lisää sama parametri,
root@ubuntu~]# vi /etc/sysctl.conffs.file-max = 100000
Tallenna ja poistu tiedosto,
Suorita beneath-komento tehdäksesi yllä olevat muutokset voimaan välittömästi ilman sisäänkirjautumista ja uudelleenkäynnistystä.
root@ubuntu~]# sysctl -p
nyt tarkistetaan, ovatko uudet muutokset voimassa vai eivät.
root@ubuntu~]# cat /proc/sys/fs/file-max100000
käytä alla olevaa komentoa selvittääksesi kuinka monta tiedostokuvausta tällä hetkellä käytetään:
# more /proc/sys/fs/file-nr1216 0 100000
Huom:- komentoa ”sysctl-p” käytetään muutosten toimittamiseen ilman uudelleenkäynnistystä ja kirjautumista.
Aseta käyttäjätason resurssiraja limitin kautta.conf-tiedosto
” /etc / sysctl.conf ” tiedostoa käytetään resurssirajan asettamiseen, mutta jos haluat asettaa resurssirajan tietylle käyttäjälle, kuten Oracle, MariaDB ja Apache, tämä voidaan saavuttaa ”/etc/security/limits-toiminnolla.conf ” – tiedosto.
Otosraja.conf on esitetty alla,
root@ubuntu~]# cat /proc/sys/fs/file-max
oletetaan, että haluamme asettaa kovan ja pehmeän rajan avaa tiedostoja linuxtechin käyttäjälle ja Oraclen käyttäjälle aseta kova ja pehmeä raja avoimen prosessin määrälle, Muokkaa tiedostoa ”/etc/security/limits.conf ” ja lisätään seuraavat rivit
# 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
Tallenna & poistu tiedostosta.
Huom.: Jos haluat asettaa resurssirajan ryhmälle käyttäjien sijaan, se voi olla mahdollista myös limitin kautta.conf-tiedosto käyttäjänimen sijaan type @<Group_Name> ja muut kohteet ovat samat, esimerkki on alla,
# 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
tarkista, ovatko uudet muutokset voimassa vai eivät,
~]# su - linuxtechi~]$ ulimit -n -H4096~]$ ulimit -n -S1024~]# su - oracle~]$ ulimit -H -u8096~]$ ulimit -S -u4096
huomautus: toinen merkittävimmin käytetty komento on ”lsof”, jota käytetään selvittämään ”kuinka monta tiedostoa on avattu tällä hetkellä”. Tämä komento on erittäin hyödyllinen ylläpitäjille.
johtopäätös:
kuten johdanto-osassa ”ulimit” mainittu komento on erittäin tehokas ja auttaa konfiguroimaan ja varmistamaan, että sovelluslaitokset ovat sujuvampia ilman pullonkauloja. Tämä komento auttaa korjaamaan monia tiedostojen rajoituksia Linux-pohjaisissa palvelimissa.