Ricerca nel sito web

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.