Com augmentar el nombre de límits de fitxers oberts a Linux


A Linux, podeu canviar la quantitat màxima de fitxers oberts. Podeu modificar aquest número mitjançant l'ordre ulimit. Us atorga la possibilitat de controlar els recursos disponibles per a l'intèrpret d'ordres o procés iniciat per aquest.

En aquest breu tutorial us mostrarem com comprovar el vostre límit actual de fitxers oberts i descripcions de fitxers, però per fer-ho, haureu de tenir accés root al vostre sistema.

Primer, vegem com podem esbrinar el nombre màxim de descriptors de fitxers oberts al vostre sistema Linux.

Trobeu Linux Open File Limit

El valor s'emmagatzema a:

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

818354

El número que veureu mostra el nombre de fitxers que un usuari pot tenir obert per sessió d'inici de sessió. El resultat pot ser diferent segons el vostre sistema.

Per exemple, en un servidor meu CentOS, el límit es va establir en 818354, mentre que al servidor Ubuntu que executo a casa, el límit predeterminat es va establir en 176772.

Si voleu veure els límits durs i suaus, podeu utilitzar les ordres següents:

# ulimit -Hn

4096
# ulimit -Sn

1024

Per veure els valors durs i suaus per a diferents usuaris, simplement podeu canviar l'usuari amb su a l'usuari quins límits voleu comprovar.

Per exemple:

# su marin
$ ulimit -Sn

1024
$ ulimit -Hn

4096

Com comprovar els límits dels descriptors de fitxers a tot el sistema a Linux

Si esteu executant un servidor, algunes de les vostres aplicacions poden requerir límits més alts per als descriptors de fitxers oberts. Un bon exemple són els serveis MySQL/MariaDB o el servidor web Apache.

Podeu augmentar el límit de fitxers oberts a Linux editant la directiva del nucli fs.file-max. Per a això, podeu utilitzar la utilitat sysctl.

Sysctl s'utilitza per configurar els paràmetres del nucli en temps d'execució.

Per exemple, per augmentar el límit de fitxers oberts a 500.000, podeu utilitzar l'ordre següent com a root:

# sysctl -w fs.file-max=500000

Podeu comprovar el valor actual dels fitxers oberts amb l'ordre següent:

$ cat /proc/sys/fs/file-max

Amb l'ordre anterior, els canvis que hàgiu fet només romandran actius fins al proper reinici. Si voleu aplicar-los de manera permanent, haureu d'editar el següent fitxer:

# vi /etc/sysctl.conf

Afegiu la línia següent:

fs.file-max=500000

Per descomptat, podeu canviar el número segons les vostres necessitats. Per tornar a verificar els canvis, feu servir:

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

Els usuaris hauran de tancar la sessió i tornar a iniciar sessió perquè els canvis tinguin efecte. Si voleu aplicar el límit immediatament, podeu utilitzar l'ordre següent:

# sysctl -p

Estableix els límits de fitxers oberts a nivell d'usuari a Linux

Els exemples anteriors mostraven com establir límits globals, però és possible que vulgueu aplicar límits per usuari. Per a això, com a usuari root, haureu d'editar el següent fitxer:

# vi /etc/security/limits.conf

Si sou un administrador de Linux, us suggereixo que us familiaritzeu molt amb aquest fitxer i què hi podeu fer. Llegiu tots els comentaris que hi ha, ja que ofereix una gran flexibilitat pel que fa a la gestió dels recursos del sistema limitant els usuaris/grups a diferents nivells.

Les línies que hauríeu d'afegir prenen els paràmetres següents:

<domain>        <type>  <item>  <value>

Aquí teniu un exemple d'establir límits suaus i durs per a l'usuari marin:

## Example hard limit for max opened files
marin        hard nofile 4096
## Example soft limit for max opened files
marin        soft nofile 1024

Pensaments finals

Aquest breu article us mostra un exemple bàsic de com podeu comprovar i configurar límits globals i de nivell d'usuari per al nombre màxim de fitxers oberts.

Tot i que acabem de rascar la superfície, us recomano que feu una ullada més detallada i llegiu sobre /etc/sysctl.conf i /etc/security/limits.conf i apreneu a utilitzar-los. Et seran de gran ajuda algun dia.