Admite millones de conexiones simultáneas a través de una configuración razonable

En un sistema Linux de producción, básicamente es necesario elevar el límite en la cantidad de identificadores de archivos. La razón es que el valor predeterminado del sistema Linux es 1024, es decir, un proceso puede aceptar hasta 1024 conexiones de socket, lo que está lejos de ser suficiente.

Los identificadores de archivo también se denominan descriptores de archivo. En el sistema Linux, los archivos se pueden dividir en archivos ordinarios, archivos de directorio, archivos de enlace y archivos de dispositivo.

Un descriptor de archivo es un índice creado por el núcleo para la gestión eficiente de los archivos abiertos.Es un número entero no negativo (generalmente un número entero pequeño) que se refiere al archivo abierto. Todas las llamadas del sistema IO (incluidas las llamadas de lectura y escritura de socket) se realizan a través de descriptores de archivos.

En Linux, puede ver la cantidad máxima de identificadores de archivos que un proceso puede abrir llamando al comando ulimit. El uso específico de este comando es:

ulimit -n
复制代码

El comando ulimit es un comando de límite básico que se usa para mostrar y modificar el proceso de usuario actual. La opción -n se usa para hacer referencia o establecer el valor límite del número actual de identificadores de archivos. El valor predeterminado del sistema Linux es 1024.

Se emitirá “Socket/File:Can't open so many files”un mensaje de error cuando el número de identificadores de archivos abiertos por un solo proceso exceda el límite superior configurado por el sistema.

Estos dos parámetros se pueden configurar a través de ulimit de la siguiente manera:

ulimit  -n  1000000
复制代码

Hay una falla en el uso del comando ulimit, es decir, el comando solo puede modificar algunas restricciones básicas del entorno de usuario actual y solo es válido en el entorno de usuario actual. Es decir, la modificación es válida mientras la herramienta de terminal actual esté conectada al shell actual. Una vez que se desconecte la sesión del usuario, o el usuario salga de Linux, su valor volverá al valor predeterminado del sistema de 1024. Y, después de que el sistema se reinicie, la cantidad de identificadores se restaurará al valor predeterminado.

El comando ulimit solo se puede usar para modificaciones temporales. Si desea guardar permanentemente la cantidad máxima de descriptores de archivo, puede editar el archivo de inicio /etc/rc.local y agregar el siguiente contenido al archivo:

ulimit -SHn 1000000
复制代码

La opción -S significa límite suave y -H significa límite duro.

El límite estricto es el límite real, es decir, el máximo puede ser 1 millón, no más.

El límite suave es el límite en el que el sistema emite una Advertencia. Si se excede este límite, el kernel emitirá una advertencia.

Los usuarios normales pueden cambiar el valor del límite suave al valor máximo establecido del valor del límite duro a través del comando ulimit. Si desea cambiar el valor del límite estricto, debe tener privilegios de usuario root.

要彻底解除Linux系统的最大文件打开数量的限制,可以通过编辑Linux的极限配置文件/etc/security/limits.conf来做到。修改此文件,加入如下内容:

soft nofile 1000000
hard nofile 1000000
复制代码

在使用和安装目前流行的分布式搜索引擎ElasticSearch时,必须修改这个文件,以增加最大的文件描述符的极限值。当然,在生产环境运行Netty时,也需要修改/etc/security/limits.conf文件来增加文件描述符数量的极限值。

Supongo que te gusta

Origin juejin.im/post/6969098858924081183
Recomendado
Clasificación