Cómo configurar ulimit y límite de descriptores de archivos en servidores Linux

Introducción: Desafíos como la cantidad de archivos abiertos en cualquiera de los entornos de producción se han vuelto comunes hoy en día. Dado que muchas aplicaciones que están basadas en Java y Apache, se están instalando y configurando, lo que puede generar demasiados archivos abiertos, descriptores de archivos, etc. Si esto excede el límite predeterminado establecido, entonces uno puede enfrentar problemas de control de acceso y apertura de archivos retos Muchos entornos de producción se paralizan debido a esto.

ulimit-number-openfiles-linux-servidor

Afortunadamente, tenemos “ulimitComando en cualquiera de los servidores basados ​​en Linux, mediante el cual se puede ver/establecer/obtener el número de archivos abiertos, estado/detalles de configuración. Este comando está equipado con muchas opciones y con esta combinación se puede establecer el número de archivos abiertos. Los siguientes son comandos paso a paso con ejemplos explicados en detalle.

Para ver cuál es el límite actual de archivos abiertos en cualquier sistema Linux

Para obtener el límite de archivos abiertos en cualquier servidor Linux, ejecute el siguiente comando,

[[email protected] ~]# cat /proc/sys/fs/file-max
146013

El número anterior muestra que el usuario puede abrir el archivo ‘146013’ por sesión de inicio de sesión de usuario.

[[email protected] ~]# cat /proc/sys/fs/file-max
149219
[[email protected] ~]# cat /proc/sys/fs/file-max
73906

Esto indica claramente que los sistemas operativos Linux individuales tienen una cantidad diferente de archivos abiertos. Esto se basa en dependencias y aplicaciones que se ejecutan en los respectivos sistemas.

comando ulimit:

Como sugiere el nombre, ulimit (límite de usuario) se usa para mostrar y establecer el límite de recursos para el usuario que inició sesión. Cuando ejecutamos el comando ulimit con la opción -a, imprimirá el límite de todos los recursos para el usuario que inició sesión. Ahora vamos a correr”ulímite -a” en sistemas Ubuntu/Debian y CentOS,

Sistema Ubuntu/Debian,

[email protected] ~}$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 5731
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024      
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 5731
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Sistema CentOS

[email protected] ~}$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 5901
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 5901
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Como podemos ver aquí, diferentes sistemas operativos tienen diferentes límites establecidos. Todos estos límites se pueden configurar/cambiar usando el comando «ulimit».

Para mostrar el límite de recursos individual, pase el parámetro individual en el comando ulimit, algunos de los parámetros se enumeran a continuación:

  • ulimit -n –> Mostrará el número de límites de archivos abiertos
  • ulimit -c -> Muestra el tamaño del archivo central
  • umilit -u –> Mostrará el límite máximo de procesos de usuario para el usuario que ha iniciado sesión.
  • ulimit -f –> Mostrará el tamaño máximo de archivo que puede tener el usuario.
  • umilit -m –> Mostrará el tamaño máximo de memoria para el usuario conectado.
  • ulimit -v –> Mostrará el límite máximo de tamaño de memoria

Use los comandos a continuación para verificar los límites estrictos y flexibles para la cantidad de archivos abiertos para el usuario que inició sesión

[email protected] ~}$ ulimit -Hn
1048576
[email protected] ~}$ ulimit -Sn
1024

¿Cómo solucionar el problema cuando se alcanzó el límite en el número máximo de archivos?

Supongamos que nuestro servidor Linux ha alcanzado el límite de la cantidad máxima de archivos abiertos y queremos extender ese límite en todo el sistema, por ejemplo, queremos establecer 100000 como límite de la cantidad de archivos abiertos.

Use el comando sysctl para pasar el parámetro fs.file-max al kernel sobre la marcha, ejecute el comando debajo como usuario root,

[email protected]~]# sysctl -w fs.file-max=100000
fs.file-max = 100000

Los cambios anteriores estarán activos hasta el próximo reinicio, por lo que para que estos cambios sean persistentes durante el reinicio, edite el archivo /etc/sysctl.conf y agregar el mismo parámetro,

[email protected]~]# vi /etc/sysctl.conf
fs.file-max = 100000

guardar y salir del archivo,

Ejecute el comando debajo para que los cambios anteriores entren en vigencia inmediatamente sin cerrar sesión y reiniciar.

[email protected]~]# sysctl -p

Ahora verifique si los nuevos cambios están en vigor o no.

[email protected]~]# cat /proc/sys/fs/file-max
100000

Use el siguiente comando para averiguar cuántos descriptores de archivos se están utilizando actualmente:

[[email protected] ~]# more /proc/sys/fs/file-nr
1216    0       100000

Nota:- Comando “sysctl-p” se utiliza para confirmar los cambios sin reiniciar y cerrar sesión.

Establezca el límite de recursos del nivel de usuario a través del archivo limit.conf

/etc/sysctl.confEl archivo «se usa para establecer el límite de recursos en todo el sistema, pero si desea establecer el límite de recursos para un usuario específico como Oracle, MariaDB y Apache, esto se puede lograr a través de»/etc/security/limits.conf» Archivo.

Ejemplo Limit.conf se muestra a continuación,

[email protected]~]# cat /proc/sys/fs/file-max

Límites-conf-linux-part1

Límites-conf-linux-part2

Supongamos que queremos establecer un límite estricto y flexible en la cantidad de archivos abiertos para el usuario de linuxtechi y para el usuario de Oracle establecer un límite estricto y flexible en la cantidad de procesos abiertos, edite el archivo «/etc/security/limits.conf» y agregue lo siguiente líneas

# hard limit for max opened files for linuxtechi user
linuxtechi       hard    nofile          4096
# soft limit for max opened files for linuxtechi user
linuxtechi       soft    nofile          1024

# hard limit for max number of process for oracle user
oracle           hard    nproc          8096
# soft limit for max number of process for oracle user
oracle           soft    nproc          4096

Guardar y salir del archivo.

Nota: En caso de que desee poner un límite de recursos en un grupo en lugar de usuarios, también puede ser posible a través del archivo limit.conf, en lugar del nombre de usuario, escriba @ y el resto de los elementos serán los mismos, el ejemplo se muestra a continuación,

# 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

Verificar si los nuevos cambios están en vigor o no,

~]# su - linuxtechi
~]$ ulimit -n -H
4096
~]$ ulimit -n -S
1024

~]# su - oracle
~]$ ulimit -H -u
8096
~]$ ulimit -S -u
4096

Nota: Otro comando muy utilizado es «lsof” que se utiliza para averiguar “cuántos archivos están abiertos actualmente”. Este comando es muy útil para los administradores.

Conclusión:

Como se mencionó en la sección de introducción, el comando «ulimit» es muy poderoso y ayuda a configurar y asegurarse de que las instalaciones de la aplicación sean más fluidas y sin cuellos de botella. Este comando ayuda a solucionar muchas de las limitaciones de archivos en los servidores basados ​​en Linux.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *