Come aumentare il numero di limiti di file aperti in Linux
In Linux, puoi modificare la quantità massima di file aperti. Puoi modificare questo numero utilizzando il comando ulimit. Ti garantisce la possibilità di controllare le risorse disponibili per la shell o il processo avviato da essa.
Leggi anche: Imposta i limiti dei processi in esecuzione Linux a livello per utente
In questo breve tutorial ti mostreremo come verificare il limite attuale di file aperti e descrizioni di file, ma per farlo dovrai avere accesso root al tuo sistema.
Innanzitutto, vediamo come possiamo scoprire il numero massimo di descrittori di file aperti sul tuo sistema Linux.
Trova il limite dei file aperti di Linux
Il valore è memorizzato in:
cat /proc/sys/fs/file-max
818354
Il numero che vedrai mostra il numero di file che un utente può aprire per sessione di accesso. Il risultato potrebbe essere diverso a seconda del sistema.
Ad esempio, su un mio server CentOS, il limite era impostato su 818354, mentre sul server Ubuntu che utilizzo a casa il limite predefinito era impostato su 176772.
Se vuoi vedere i limiti rigidi e flessibili, puoi utilizzare i seguenti comandi:
Controlla il limite rigido in Linux
ulimit -Hn
4096
Controlla i limiti flessibili in Linux
ulimit -Sn
1024
Per vedere i valori hard e soft per diversi utenti, puoi semplicemente cambiare utente con "su" all'utente di cui desideri controllare i limiti.
Per esempio:
su marin
ulimit -Sn
1024
ulimit -Hn
4096
Come controllare i limiti dei descrittori di file a livello di sistema in Linux
Se utilizzi un server, alcune delle tue applicazioni potrebbero richiedere limiti più elevati per i descrittori di file aperti. Un buon esempio sono i servizi MySQL/MariaDB o il server web Apache.
Puoi aumentare il limite dei file aperti in Linux modificando la direttiva del kernel fs.file-max
. A questo scopo puoi utilizzare l'utility sysctl.
Sysctl viene utilizzato per configurare i parametri del kernel in fase di runtime.
Ad esempio, per aumentare il limite dei file aperti a 500000, puoi utilizzare il seguente comando come root:
sysctl -w fs.file-max=500000
Puoi controllare il valore corrente dei file aperti con il seguente comando:
cat /proc/sys/fs/file-max
Con il comando precedente le modifiche apportate rimarranno attive solo fino al prossimo riavvio. Se desideri applicarli in modo permanente, dovrai modificare il seguente file:
vi /etc/sysctl.conf
Aggiungi la seguente riga:
fs.file-max=500000
Naturalmente è possibile modificare il numero in base alle proprie esigenze. Per verificare nuovamente le modifiche utilizzare:
cat /proc/sys/fs/file-max
Gli utenti dovranno disconnettersi e accedere nuovamente affinché le modifiche abbiano effetto. Se desideri applicare immediatamente il limite, puoi utilizzare il seguente comando:
sysctl -p
Imposta i limiti dei file aperti a livello utente in Linux
Gli esempi precedenti mostrano come impostare limiti globali, ma potresti voler applicare limiti in base all'utente. A tale scopo, come utente root, dovrai modificare il seguente file:
vi /etc/security/limits.conf
Se sei un amministratore Linux, ti suggerisco di acquisire molta familiarità con quel file e cosa puoi fare con esso. Leggi tutti i commenti in esso contenuti poiché offre grande flessibilità in termini di gestione delle risorse di sistema limitando utenti/gruppi a diversi livelli.
Le righe da aggiungere accettano i seguenti parametri:
<domain> <type> <item> <value>
Ecco un esempio di impostazione di limiti flessibili e rigidi per l'utente marin:
## Example hard limit for max opened files
marin hard nofile 4096
## Example soft limit for max opened files
marin soft nofile 1024
Pensieri finali
Questo breve articolo ti ha mostrato un esempio di base di come controllare e configurare i limiti globali e a livello di utente per il numero massimo di file aperti.
Anche se abbiamo appena scalfito la superficie, ti incoraggio vivamente a dare un'occhiata più dettagliata e a leggere informazioni su /etc/sysctl.conf e /etc/security/limits.conf e imparare come usarli. Un giorno ti saranno di grande aiuto.