Hogyan állítsuk be az ulimit és a fájlleírók korlátját Linux szervereken

Bevezetés: Az olyan kihívások, mint a nyitott fájlok száma bármelyik termelési környezetben, mindennapossá váltak. Mivel sok Java és Apache alapú alkalmazás telepítve és konfigurálva van, ami túl sok nyitott fájlhoz, fájlleíróhoz stb.vezethet. Ha ez meghaladja a beállított alapértelmezett korlátot, akkor hozzáférés-vezérlési problémákkal és fájlmegnyitási kihívásokkal szembesülhet. Sok termelési környezet emiatt leáll.

ulimit-number-openfiles-linux-server

szerencsére, van” ulimit ” parancs bármely Linux alapú szerver, amellyel lehet látni/set/get fájlok száma Nyitott állapot/konfigurációs részleteket. Ez a parancs számos opcióval rendelkezik, és ezzel a kombinációval beállíthatja a megnyitott fájlok számát. A következő lépésenkénti parancsok részletesen ismertetett példákkal.

A jelenlegi nyitott fájlkorlát megtekintéséhez bármely Linux rendszerben

a nyitott fájlkorlát eléréséhez bármely Linux szerveren hajtsa végre a következő parancsot:

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

a fenti szám azt mutatja, hogy a felhasználó megnyithatja az “146013” fájlt felhasználói bejelentkezési munkamenetenként.

# cat /proc/sys/fs/file-max149219# cat /proc/sys/fs/file-max73906

Ez egyértelműen azt jelzi, hogy az egyes Linux operációs rendszerek különböző számú megnyitott fájlt tartalmaznak. Ez az adott rendszerekben futó függőségeken és alkalmazásokon alapul.

ulimit parancs :

ahogy a neve is sugallja, az ulimit (user limit) a bejelentkezett felhasználó erőforráskorlátjának megjelenítésére és beállítására szolgál.Amikor az ulimit parancsot futtatjuk-a opcióval, akkor az összes erőforrás korlátját kinyomtatja a bejelentkezett felhasználó számára. Most futtassuk az” ulimit-a” – t Ubuntu / Debian és CentOS rendszereken,

Ubuntu / Debian rendszer,

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 rendszer

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

mint itt látható, a különböző operációs rendszereknek különböző korlátai vannak beállítva. Mindezek a korlátok konfigurálhatók / megváltoztathatók az “ulimit” paranccsal.

az egyedi erőforrás-korlát megjelenítéséhez adja át az egyedi paramétert az ulimit parancsban, néhány paraméter az alábbiakban található:

  • ulimit –n- > megjeleníti a megnyitott fájlok számát limit
  • ulimit –c- > megjeleníti a magfájl méretét
  • umilit –u – > megjeleníti a bejelentkezett felhasználó maximális felhasználói folyamatkorlátját.
  • ulimit-f – > megjeleníti a felhasználó maximális fájlméretét.
  • umilit-m –> megjeleníti a bejelentkezett felhasználó maximális memóriaméretét.
  • ulimit-v – > megjeleníti a maximális memória méretkorlátot

az alábbi parancsok használata ellenőrizze a bejelentkezett felhasználó számára a megnyitott fájlok számának kemény és puha korlátait

shashi@Ubuntu ~}$ ulimit -Hn1048576shashi@Ubuntu ~}$ ulimit -Sn1024

hogyan lehet megoldani a problémát, ha elérte a maximális fájlok számának korlátozását ?

tegyük fel, hogy a Linux szerverünk elérte a megnyitott fájlok maximális számának határát, és ezt a korlátot a rendszer egészére ki akarjuk terjeszteni, például 100000-et akarunk beállítani a megnyitott fájlok számának korlátjaként.

használja a sysctl parancsot az fs átadásához.file-max paraméter kernel menet közben, végre alatt parancs root felhasználó,

root@ubuntu~]# sysctl -w fs.file-max=100000fs.file-max = 100000

fenti változások aktív lesz, amíg a következő újraindítás, így, hogy ezek a változások tartós egész újraindítás, szerkessze a fájlt /etc/sysctl.conf és add ugyanazt a paramétert,

root@ubuntu~]# vi /etc/sysctl.conffs.file-max = 100000

fájl mentése és kilépése,

futtassa az alatta parancsot, hogy a fenti módosítások azonnal érvénybe lépjenek kijelentkezés és újraindítás nélkül.

root@ubuntu~]# sysctl -p

most ellenőrizze, hogy az új változások érvényesek-e vagy sem.

root@ubuntu~]# cat /proc/sys/fs/file-max100000

használja az alábbi parancsot, hogy megtudja, hány fájlleírót használnak jelenleg:

# more /proc/sys/fs/file-nr1216 0 100000

megjegyzés:- a “sysctl-p” parancs a módosítások újraindítás és kijelentkezés nélküli végrehajtására szolgál.

állítsa be a felhasználói szintű erőforrás korlátot a limit segítségével.conf fájl

” / etc / sysctl.a conf ” fájl az erőforrás-korlátozás rendszerszintű beállítására szolgál, de ha erőforrás-korlátot szeretne beállítani bizonyos felhasználók számára, mint például az Oracle, a MariaDB és az Apache, akkor ezt az “/etc/security/limits ” segítségével lehet elérni.conf ” fájl.

minta határ.a conf az alábbiakban látható,

root@ubuntu~]# cat /proc/sys/fs/file-max

Limits-conf-linux-part1

Limits-conf-linux-part2

tegyük fel, hogy kemény és puha korlátot akarunk beállítani a Nyissa meg a fájlokat a linuxtechi felhasználó és az oracle felhasználó számára állítsa be a kemény és puha korlátot a nyitott folyamatok számára, szerkessze a fájlt “/etc/security/limits.add hozzá a következő sorokat

# 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

Save & lépj ki a fájlból.

Megjegyzés: Abban az esetben, ha erőforrás-korlátot szeretne tenni egy csoportra a felhasználók helyett, akkor a limit segítségével is lehetséges.conf fájl, a felhasználónév helyett írja be a @<Group_Name> és a többi elem ugyanaz lesz , az alábbi példa látható,

# 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

ellenőrizze, hogy az új módosítások érvényben vannak-e vagy sem,

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

megjegyzés: egyéb majorly használt parancs “lsof”, amely arra szolgál, hogy megtudja, “hány fájl van megnyitva jelenleg”. Ez a parancs nagyon hasznos az adminisztrátorok számára.

következtetés:

amint azt a bevezető szakaszban említettük, az “ulimit” parancs nagyon hatékony, és segít konfigurálni és biztosítani, hogy az alkalmazások telepítése gördülékenyebb legyen, szűk keresztmetszetek nélkül. Ez a parancs segít a Linux alapú kiszolgálók számos fájlkorlátozásának kijavításában.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.