Introduzione: Sfide come numero di file aperti in qualsiasi ambiente di produzione è diventato comune ora un giorno. Poiché molte applicazioni basate su Java e Apache sono installate e configurate, il che potrebbe portare a troppi file aperti, descrittori di file ecc. Se questo supera il limite predefinito impostato, si possono incontrare problemi di controllo degli accessi e problemi di apertura dei file. Molti ambienti di produzione vengono a standstill tipo di situazioni a causa di questo.
Fortunatamente, abbiamo il comando “ulimit” in uno qualsiasi dei server basati su Linux, con il quale si può vedere/set/get numero di file aperti dettagli di stato / configurazione. Questo comando è dotato di molte opzioni e con questa combinazione si può impostare il numero di file aperti. Di seguito sono riportati i comandi passo-passo con esempi spiegati in dettaglio.
Per vedere qual è il limite di file aperto presente in qualsiasi sistema Linux
Per ottenere il limite di file aperto su qualsiasi server Linux, eseguire il seguente comando,
# cat /proc/sys/fs/file-max146013
Il numero sopra mostra che l’utente può aprire il file ‘146013’ per sessione di accesso utente.
# cat /proc/sys/fs/file-max149219# cat /proc/sys/fs/file-max73906
Questo indica chiaramente che i singoli sistemi operativi Linux hanno un numero diverso di file aperti. Questo si basa su dipendenze e applicazioni che sono in esecuzione nei rispettivi sistemi.
comando ulimit :
Come suggerisce il nome, ulimit (limite utente) viene utilizzato per visualizzare e impostare il limite di risorse per l’utente connesso.Quando eseguiamo il comando ulimit con l’opzione-a, stamperà il limite di tutte le risorse per l’utente connesso. Ora eseguiamo “ulimit-a”sui sistemi Ubuntu / Debian e CentOS,
Ubuntu / Debian System,
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 System
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
Come possiamo vedere qui diversi sistemi operativi hanno diversi limiti impostati. Tutti questi limiti possono essere configurati / modificati usando il comando “ulimit”.
Per visualizzare la singola risorsa limite poi passare il singolo parametro nel comando ulimit, alcuni parametri sono elencati di seguito:
- ulimit -n –> verrà visualizzato il numero di file aperti limite
- ulimit -c –> E visualizzare le dimensioni del file core
- umilit -u –> Verrà visualizzato l’utente la massima limite del processo per l’utente connesso.
- ulimit-f – > Mostrerà la dimensione massima del file che l’utente può avere.
- umilit-m – > Visualizzerà la dimensione massima della memoria per l’utente connesso.
- ulimit-v – > Visualizzerà il limite massimo di dimensione della memoria
Usa i comandi seguenti controlla i limiti rigidi e morbidi per il numero di file aperti per l’utente connesso
shashi@Ubuntu ~}$ ulimit -Hn1048576shashi@Ubuntu ~}$ ulimit -Sn1024
Come risolvere il problema quando è stato raggiunto il limite sul numero di file massimi ?
Supponiamo che il nostro server Linux abbia raggiunto il limite del numero massimo di file aperti e voglia estendere tale limite a livello di sistema, ad esempio vogliamo impostare 100000 come limite del numero di file aperti.
Usa il comando sysctl per passare fs.parametro file-max al kernel al volo, esegui sotto comando come utente root,
root@ubuntu~]# sysctl -w fs.file-max=100000fs.file-max = 100000
Sopra le modifiche saranno attive fino al prossimo riavvio, quindi per rendere queste modifiche persistenti durante il riavvio, modifica il file/etc / sysctl.conf e aggiungi lo stesso parametro,
root@ubuntu~]# vi /etc/sysctl.conffs.file-max = 100000
salva e esci dal file,
Esegui il comando sotto per rendere immediatamente effettive le modifiche precedenti senza disconnettersi e riavviare.
root@ubuntu~]# sysctl -p
Ora verificare se le nuove modifiche sono in vigore o meno.
root@ubuntu~]# cat /proc/sys/fs/file-max100000
Utilizzare sotto il comando per scoprire quanti descrittori di file sono attualmente in uso:
# more /proc/sys/fs/file-nr1216 0 100000
Nota:- Comando “sysctl-p” viene utilizzato per commettere le modifiche senza riavvio e logout.
Imposta il limite di risorse a livello utente tramite limit.conf file
” / etc / sysctl.il file conf ” viene utilizzato per impostare il limite di risorse a livello di sistema, ma se si desidera impostare il limite di risorse per utenti specifici come Oracle, MariaDB e Apache, questo può essere ottenuto tramite “/etc/security/limits.conf ” file.
Limite del campione.conf è mostrato di seguito
root@ubuntu~]# cat /proc/sys/fs/file-max
Supponiamo di voler impostare hard e soft limite sul numero di file aperti per linuxtechi utente e per l’utente di oracle set di soft e hard limite sul numero di elaborare, modificare il file “/etc/security/limits.conf ” e aggiungere le seguenti righe
# 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
Salva & esci dal file.
Nota: Nel caso in cui si desideri inserire il limite di risorse su un gruppo anziché sugli utenti, può anche essere possibile tramite limit.file conf, in luogo di nome utente , digitare @<Nome_gruppo> e il resto degli elementi stessi, ad esempio è mostrato di seguito,
# 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
Verificare se le nuove modifiche sono in vigore o meno,
~]# su - linuxtechi~]$ ulimit -n -H4096~]$ ulimit -n -S1024~]# su - oracle~]$ ulimit -H -u8096~]$ ulimit -S -u4096
Nota: Altre majorly utilizzato il comando è “lsof”, che viene utilizzato per scoprire “come molti file vengono aperti attualmente”. Questo comando è molto utile per gli amministratori.
Conclusione:
Come menzionato nella sezione introduttiva, il comando “ulimit” è molto potente e aiuta a configurare e assicurarsi che le installazioni delle applicazioni siano più fluide senza colli di bottiglia. Questo comando aiuta a risolvere molte delle limitazioni di file nei server basati su Linux.