GNU/Linux >> Tutoriales Linux >  >> Linux

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.

Por suerte, tenemos "ulimit Comando 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,

[[correo electrónico protegido] ~]# cat /proc/sys/fs/file-max146013

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

[[correo electrónico protegido] ~]# cat /proc/sys/fs/file-max149219[[correo electrónico protegido] ~]# cat /proc/sys/fs/file-max73906

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 ejecutemos “ulimit -a ” en sistemas Ubuntu/Debian y CentOS,

Sistema Ubuntu/Debian ,

[email protected] ~}$ ulimit -acore tamaño de archivo          (bloques, -c) 0 tamaño de segmento de datos           (kbytes, -d) prioridad de programación ilimitada             (-e) 0 tamaño de archivo               (bloques, -f) señales pendientes ilimitadas              5731max Memoria bloqueada (Kbytes, -L) 64Max Tamaño de la memoria (KBYTES, -M) Archivos UnlimitedOpen (-N) 1024 Tamaño de la tubería (512 bytes, -p) colas de mensajes 8POSIX (BYTES, -Q) 819200Real-Tiempo Prioridad (-R ) 0tamaño de pila                    (kbytes, -s) 8192 tiempo de cpu               (segundos, -t) procesos de usuario máximos ilimitados              (-u) 5731 memoria virtual          (kbytes, -v) bloqueos de archivos ilimitados                 ) ilimitado
 

Sistema CentOS

[email protected] ~}$ ulimit -acore tamaño de archivo          (bloques, -c) 0 tamaño de segmento de datos           (kbytes, -d) prioridad de programación ilimitada             (-e) 0 tamaño de archivo               (bloques, -f) señales pendientes ilimitadas              5901 memoria máxima bloqueada       (kbytes, -l) 64 tamaño máximo de memoria         (kbytes, -m) archivos abiertos ilimitados                      (-n) 1024 tamaño de tubería            (512 bytes, -p) 8 colas de mensajes POSIX     (bytes, -q) 81    prioridad r (r) 81    0tamaño de pila              (kbytes, -s) 8192 tiempo de CPU               (segundos, -t) procesos de usuario ilimitados              (-u) 5901 memoria virtual          (kbytes, -v) bloqueos de archivos ilimitados                                

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 límite de número 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 inició sesión.
  • ulimit -f –> Mostrará el tamaño máximo de archivo que el usuario puede tener.
  • 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

[correo electrónico protegido] ~}$ ulimit -Hn1048576[correo electrónico protegido] ~}$ ulimit -Sn1024

¿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 número máximo de archivos abiertos y queremos extender ese límite en todo el sistema, por ejemplo, queremos establecer 100000 como límite de número 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,

[correo electrónico protegido]~]# sysctl -w fs.file-max=100000fs.file-max =100000

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

[correo electrónico protegido]~]# vi /etc/sysctl.conffs.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.

[correo electrónico protegido]~]# sysctl -p

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

[correo electrónico protegido]~]# cat /proc/sys/fs/file-max100000

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

[[correo electrónico protegido] ~]# más /proc/sys/fs/file-nr1216 0 100000

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

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

/etc/sysctl.conf ” se utiliza para establecer un límite de recursos en todo el sistema, pero si desea establecer un límite de recursos para un usuario específico como Oracle, MariaDB y Apache, puede hacerlo a través de “/etc/security/limits.conf ” archivo.

Limit.conf de ejemplo se muestra a continuación,

[correo electrónico protegido]~]# cat /proc/sys/fs/file-max

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 lineas

# límite estricto para el máximo de archivos abiertos para el usuario de linuxtechilinuxtechi hard nofile 4096# límite flexible para el máximo de archivos abiertos para el usuario de linuxtechilinuxtechi soft nofile 1024# límite estricto para el número máximo de procesos para el usuario de Oracleoracle hard nproc 8096# límite flexible para el número máximo de proceso para oracle useroracle soft nproc 4096

Guarde y salga 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 artículos serán los mismos, el ejemplo se muestra a continuación,

# límite máximo de archivos abiertos para sysadmin group@sysadmin        hard         nofile            4096 # límite flexible para máximo de archivos abiertos para sysadmin group@sysadmin        soft         nofile            1024

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

~]# su - linuxtechi~]$ ulimit -n -H4096~]$ ulimit -n -S1024~]# su - oráculo~]$ ulimit -H -u8096~]$ ulimit -S -u4096

Nota:Otro comando que se usa principalmente 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.


Linux
  1. Cómo establecer una dirección IP estática y configurar la red en Linux

  2. Qué es NFS y cómo instalarlo en Linux

  3. Cómo extraer archivos .gz y .tar.gz en Linux

  4. Cómo montar y desmontar un sistema de archivos en Linux

  5. ¿Cómo configuro un archivo de intercambio cifrado en Linux?

Cómo instalar y configurar el navegador Tor en Linux

Archivo host de Linux:¿Cómo editarlo y usarlo?

Cómo cambiar el límite de archivos abiertos en Linux

Cómo crear y usar un archivo de intercambio en Linux

Cómo configurar la fecha y la hora en Linux

Cómo configurar y desactivar variables de entorno en Linux