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.
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
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.