¡Sin limites! Puede que a todos nos guste no tener límites, pero ¿es verdaderamente una buena idea? Por lo general, cuando no hay límites, ‘habrá dragones’. Lo mismo ocurre con limits.conf, aún cuando para los servidores de prueba, ¡un limits.conf verdaderamente ilimitado ayuda!
Que es limites.conf?
los limits.conf
El archivo contiene la configuración del límite de recursos para el sistema operativo Linux. Cuando se instaló su computadora Linux, el archivo se creó como parte de la instalación y contenía valores para recursos como el tamaño de la memoria virtual, la cantidad máxima de archivos y más.
Estos valores se establecen en límites preestablecidos para garantizar que su sistema Linux no se sobrecargue fácilmente. Caso contrario, un programa o procedimiento deshonesto podría detener fácilmente un sistema que de otro modo funcionaría. Imagine, a modo de ejemplo, una situación en la que establece el número máximo de archivos abiertos en ilimitado, y un procedimiento fraudulento (que es un procedimiento con una falla, o inclusive una pieza de software malicioso como un virus o malware) ahora comienza a abrir el archivo. después del archivo en el sistema.
Pronto, el sistema se quedará sin un recurso que necesita para manejar todos estos archivos abiertos. Ya sea el procesador en su sistema (la CPU), o la memoria o inclusive el disco en algunos casos, donde, a modo de ejemplo, podemos haber configurado el tamaño máximo de archivo del núcleo como ilimitado, y ejecutamos procesos grandes en un sistema con mucha memoria y poco espacio libre restante, o una pequeña unidad raíz.
En resumen, usando el limits.conf
archivo de configuración, un usuario (o administrador de sistemas) puede especificar límites en los recursos disponibles para el usuario y para el sistema.
El formato del limits.conf
archivo (que reside en /etc/security/
) está bien definido. De forma general, especificaremos un dominio aplicable (como un usuario, un grupo e inclusive comodines como *
), un tipo (límite suave o estricto), un elemento con el que se relaciona la regla (como el nofile
elemento que establece el número máximo de archivos abiertos, el locks
elemento que establece el número máximo de bloqueos de archivos que un usuario puede mantener, etc.) y por último un valor (la configuración real / máxima).
El encabezado de la limits.conf
file lo establece claramente con una cantidad adecuada de detalles:
Si desea leer más sobre cada elemento específico y otros ajustes de configuración con el limits.conf
archivo, simplemente ejecute:
man limits.conf
En el indicador de su terminal.
Ir ilimitado
En general, para todos los efectos, uno nunca debe ir ilimitado con limits.conf
. Entonces, puede preguntar, ¿por qué este post? Bueno, siempre que hay una regla, hay una excepción válida. La excepción, en esta circunstancia, es para probar servidores. Cuando realice pruebas o trabajos de control de calidad de cualquier tipo, a menudo se encontrará con los límites de un sistema.
Configurar las cosas como ilimitadas, con una configuración adecuada del marco de prueba / control de calidad para encargarse de la administración de recursos del sistema, es una excepción válida para mantener límites razonables y específicos del sistema dentro limits.conf
. Para todos los demás servidores, como se indica, se prefiere y se recomienda una configuración por servidor.
Sin más preámbulos, introduzcamos un script que establece todas las variables y opciones en limits.conf
a ilimitado. Este script se basa en la licencia GPLv2. setup_server.sh script en el repositorio mariadb-qa en GitHub. Además le puede ser de interés explorar este script para otros archivos que puede adoptar hacia configuraciones ilimitadas para una configuración de servidor de prueba, a modo de ejemplo /etc/sysctl.conf
ajustes y /etc/systemd/logind.conf
Para configurar un servidor como ilimitado, ejecute el siguiente script en el indicador de terminal del servidor (de prueba) que desea configurar como ilimitado.
Advertencia: tenga en cuenta que hacer esto en una máquina de producción probablemente no sea una buena idea a menos que tenga un conocimiento sólido del cambio que está realizando, como se explica en parte en este post, y lo esté haciendo por un motivo específica y válida. Hacer este cambio además tiene implicaciones de seguridad importantes, y se recomienda hacerlo solo en una máquina que esté detrás de un firewall y VPN, dicho de otra forma, no un servidor de cara al público. TLDR; Proceder a poner en práctica esto es bajo su propio riesgo.
Además debe saber que utilizar un número alto (mayor que ~ 20000) para nproc suave y duro puede causar inestabilidad en el sistema y se cuelga en Centos 7, aún cuando no en Ubuntu 18, 19 y 20. Yo, y otros ingenieros conmigo, tenemos Usé esta configuración durante bastante tiempo para probar servidores, y para esa aplicación, es ideal. Tenga en cuenta que todas las configuraciones son ilimitadas excepto nofile
para el cual 1048576 es el máximo.
sudo bash -c "cat << EOF > /etc/security/limits.conf * soft core unlimited * hard core unlimited * soft data unlimited * hard data unlimited * soft fsize unlimited * hard fsize unlimited * soft memlock unlimited * hard memlock unlimited * soft nofile 1048576 * hard nofile 1048576 * soft rss unlimited * hard rss unlimited * soft stack unlimited * hard stack unlimited * soft cpu unlimited * hard cpu unlimited * soft nproc unlimited * hard nproc unlimited * soft as unlimited * hard as unlimited * soft maxlogins unlimited * hard maxlogins unlimited * soft maxsyslogins unlimited * hard maxsyslogins unlimited * soft locks unlimited * hard locks unlimited * soft sigpending unlimited * hard sigpending unlimited * soft msgqueue unlimited * hard msgqueue unlimited EOF"
Una vez que haya ejecutado esto, simplemente reinicie su servidor para cargar todos los nuevos ajustes de configuración. No notará ninguna diferencia, excepto que sus ejecuciones de prueba, si fueron muy intensivas en recursos, ya no se detendrán en varios problemas de configuración de límites.
Una vez dicho esto, como se indicó previamente, necesitará, como parte de su marco de prueba, un procedimiento sólido de supervisión de los recursos del servidor y del perro guardián que garantice que su servidor no se sobreutilice, lo que a menudo resulta en bloqueos y requerimientos de reinicio. En un post futuro, es factible que proporcione los conceptos básicos para un script de este tipo desde donde puede expandirlo para cubrir su propia configuración.
Terminando
Hay casos de uso válidos para configurar /etc/security/limits.conf
a todos los máximos posibles. Por lo general, son raros (y los servidores de prueba son una excepción notable).
En este post, aprendimos más sobre limits.conf
: por qué existe y cómo cambiar su configuración. Exploramos el limits.conf
formato, sintaxis y modismos y enumeró un script simple que puede determinar todas nuestras configuraciones como ilimitadas.
Inclusive si desea configurar su servidor a límites menores, el script es fácil de adaptar y puede integrarse (como código GPLv2 como se describe) en sus propios scripts: simplemente cambie unlimited
a los valores deseados. Esta es además una forma simple de configurar rápidamente un servidor con los valores deseados y, por eso, unificar y codificar su granja de servidores. limits.conf
configuración.
¡Disfrutar!