Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ Elastic Cloud Server/ Preguntas frecuentes/ Network Configurations/ Others/ ¿Cómo puedo ver y modificar los parámetros del núcleo de un ECS de Linux?
Actualización más reciente 2023-08-08 GMT+08:00

¿Cómo puedo ver y modificar los parámetros del núcleo de un ECS de Linux?

Modifique los parámetros del núcleo solo si la configuración de los parámetros afecta a sus servicios. Los parámetros del núcleo varían dependiendo de las versiones de SO. Si se debe modificar la configuración de los parámetros,

  • Asegúrese de que la configuración del parámetro de destino cumple con los requisitos de servicio.
  • Modifique los parámetros correctos del núcleo. Para obtener más información acerca de los parámetros comunes del kernel, consulte Tabla 1.
  • Haga una copia de respaldo de los datos clave de ECS antes de modificar la configuración de los parámetros del núcleo.

Fondo

Tabla 1 Parámetros comunes del kernel de Linux

Parámetro

Descripción

net.core.rmem_default

Especifica el tamaño predeterminado (en bytes) de la ventana para recibir los datos de TCP.

net.core.rmem_max

Especifica el tamaño máximo (en bytes) de la ventana para recibir los datos de TCP.

net.core.wmem_default

Especifica el tamaño predeterminado (en bytes) de la ventana para transmitir los datos de TCP.

net.core.wmem_max

Especifica el tamaño máximo (en bytes) de la ventana para transmitir los datos de TCP.

net.core.netdev_max_backlog

Especifica el número máximo de paquetes que se pueden enviar a una cola cuando la velocidad a la que cada puerto de red recibe paquetes es más rápida que la velocidad a la que el núcleo procesa estos paquetes.

net.core.somaxconn

Define la longitud máxima de la cola de escucha para cada puerto del sistema. Este parámetro se aplica globalmente.

net.core.optmem_max

Especifica el tamaño máximo del búfer permitido por cada socket.

net.ipv4.tcp_mem

Utiliza la pila de TCP para mostrar el uso de memoria en las páginas de memoria (4 KB en general).

El primer valor es el límite inferior de uso de memoria.

El segundo valor es el límite superior de la carga agregada a la memoria intermedia cuando la memoria está sobrecargada.

El tercer valor es el límite superior de uso de memoria. Cuando se alcanza este valor, los paquetes pueden descartarse para reducir el uso de memoria. Para un BDP grande, aumente el valor del parámetro según sea necesario. La unidad de este parámetro es la página de memoria, pero no el byte.

net.ipv4.tcp_rmem

Especifica la memoria utilizada por los sockets para la optimización automática.

El primer valor es el número mínimo de bytes asignados a la memoria intermedia de socket para recibir datos.

El segundo valor es el valor predeterminado, que se sobrescribe con rmem_default. El tamaño de la memoria intermedia puede aumentar a este valor cuando la carga del sistema no es pesada.

El tercer valor es el número máximo de bytes asignados a la memoria intermedia de socket para recibir datos. rmem_max sobrescribe este valor.

net.ipv4.tcp_wmem

Especifica la memoria utilizada por los sockets para la optimización automática.

El primer valor es el número mínimo de bytes asignados a la memoria intermedia de socket para transmitir datos.

El segundo valor es el valor predeterminado, que se sobrescribe con wmem_default. El tamaño de la memoria intermedia puede aumentar a este valor cuando la carga del sistema no es pesada.

El tercer valor es el número máximo de bytes asignados a la memoria intermedia de socket para transmitir datos. wmem_max sobrescribe este valor.

net.ipv4.tcp_keepalive_time

Especifica el intervalo en el que los mensajes de detección de Keepalive se envían en segundos para comprobar las conexiones de TCP.

net.ipv4.tcp_keepalive_intvl

Especifica el intervalo en el que los mensajes de detección de Keepalive se reenvían en segundos cuando no se recibe ninguna respuesta.

net.ipv4.tcp_keepalive_probes

Especifica el número máximo de mensajes de detección de Keepalive que se envían para determinar un error de conexión de TCP.

net.ipv4.tcp_sack

Habilita el acuse de recibo selectivo (el valor 1 indica habilitado). Esta configuración permite al transmisor reenviar solo los paquetes perdidos, mejorando así el rendimiento del sistema. Sin embargo, esta configuración aumentará el uso de la CPU. Se le sugiere habilitar el acuse de recibo selectivo para la comunicación de WAN.

net.ipv4.tcp_fack

Habilita el acuse de recibo de reenvío para el acuse de recibo selectivo (SACK), reduciendo así la congestión. Se le sugiere habilitar el acuse de recibo de reenvío.

net.ipv4.tcp_timestamps

Especifica una marca de tiempo de TCP, que agregará 12 bytes en el encabezado del paquete de TCP. Esta configuración calcula RTT usando RFC1323, un método de retransmisión más preciso tras el tiempo de espera que la retransmisión. Se sugiere habilitar este parámetro para un mayor rendimiento del sistema.

net.ipv4.tcp_window_scaling

Habilita la escala de ventana basada en RFC1323 estableciendo el valor del parámetro en 1 si la ventana de TCP es mayor que 64 KB. La ventana de TCP máxima es de 1 GB. Este parámetro solo tiene efecto cuando se habilita el ajuste de ventana en ambos extremos de la conexión de TCP.

net.ipv4.tcp_syncookies

Especifica si se debe habilitar la sincronización de TCP (syncookie). Esta configuración evita la sobrecarga del socket cuando se intenta configurar un gran número de conexiones. CONFIG_SYN_COOKIES debe estar habilitado en el kernel para su compilación. El valor predeterminado es 0, que indica que la sincronización TCP está deshabilitada.

net.ipv4.tcp_tw_reuse

Especifica si se puede utilizar un socket TIME-WAIT (puerto TIME-WAIT) para las nuevas conexiones de TCP.

NOTA:

Este parámetro solo es válido para clientes y solo tiene efecto cuando net.ipv4.tcp_timestamps está habilitado.

Este parámetro no se puede establecer en 1 si NAT está habilitado. De lo contrario, se producirá un error en los inicios de sesión remotos de ECS. Para obtener más información, consulte ¿Por qué se interrumpen ocasionalmente las conexiones a un ECS de Linux usando SSH o a aplicaciones en el ECS?

net.ipv4.tcp_tw_recycle

Permite el reciclaje rápido de los sockets TIME-WAIT.

NOTA:

Este parámetro solo es válido cuando net.ipv4.tcp_timestamps está habilitado.

No establezca este parámetro en 1 si NAT está habilitado. De lo contrario, se producirá un error durante los inicios de sesión remotos de ECS. Para obtener más información, consulte ¿Por qué las conexiones a un ECS de Linux que usa SSH o a las aplicaciones en el ECS se interrumpen ocasionalmente?

net.ipv4.tcp_fin_timeout

Especifica el tiempo (en segundos) durante el cual una conexión de TCP de socket que se desconecta del extremo local permanece en el estado FIN-WAIT-2. La suspensión del proceso puede ser causada por la desconexión del extremo opuesto, la conexión continua desde el extremo opuesto, u otras razones.

net.ipv4.ip_local_port_range

Especifica los números de puerto locales permitidos por TCP/UDP.

net.ipv4.tcp_max_syn_backlog

Especifica el número máximo de solicitudes de conexión que no son reconocidas por el extremo opuesto y que pueden almacenarse en la cola. El valor predeterminado es 1024. Si el servidor se sobrecarga con frecuencia, intente aumentar el valor.

net.ipv4.tcp_low_latency

Esta opción debe deshabilitarse si se utiliza la pila TCP/IP para alto rendimiento y baja latencia.

net.ipv4.tcp_westwood

Permite que el algoritmo de control de congestión en el extremo del transmisor evalúe el rendimiento y mejore la utilización general del ancho de banda. Se sugiere activar el algoritmo de control de congestión para la comunicación de WAN.

net.ipv4.tcp_bic

Permite aumentar la congestión binaria para las redes de larga distancia rápidas de modo que las conexiones con operaciones que se realizan a una velocidad de Gbit/s pueden ser funcionales. Se le sugiere habilitar la congestión de aumento binario para la comunicación de WAN.

net.ipv4.tcp_max_tw_buckets

Especifica el número de los bucket TIME_WAIT, que por defecto es 180000. Si el número de los bucket excede el valor predeterminado, se borrarán los bucket adicionales.

net.ipv4.tcp_synack_retries

Especifica el número de veces que los paquetes SYN+ACK se retransmiten en estado SYN_RECV.

net.ipv4.tcp_abort_on_overflow

Cuando este parámetro se establece en 1, si el sistema recibe un gran número de solicitudes en un corto período de tiempo pero no las procesa, el sistema enviará paquetes de reinicio para terminar las conexiones. Se recomienda que mejore las capacidades de procesamiento del sistema optimizando la eficiencia de la aplicación en lugar de realizar las operaciones de restablecimiento.

Valor predeterminado: 0

net.ipv4.route.max_size

Especifica el número máximo de las rutas permitidas por el núcleo.

net.ipv4.ip_forward

Reenvía los paquetes entre las interfaces.

net.ipv4.ip_default_ttl

Especifica el número máximo de saltos por los que puede pasar un paquete.

net.netfilter.nf_conntrack_tcp_timeout_established

Borra las conexiones iptables que están inactivas durante un período de tiempo específico.

net.netfilter.nf_conntrack_max

Especifica el valor máximo de las entradas hash.

Consulta de parámetros del kernel

  • Método 1: Ejecute el comando cat de /proc/sys para ver el contenido del archivo.

    /proc/sys/ es un directorio pseudo generado después de iniciar el kernel de Linux. La carpeta net de este directorio almacena todos los parámetros del kernel que han tenido efecto en el sistema. La estructura del árbol de directorios se determina basándose en los nombres de parámetros completos. Por ejemplo, net.ipv4.tcp_tw_recycle corresponde al archivo /proc/sys/net/ipv4/tcp_tw_recycle y el contenido del archivo es el valor del parámetro.

    Por ejemplo:

    Para ver el valor net.ipv4.tcp_tw_recycle, ejecute el siguiente comando:

    cat /proc/sys/net/ipv4/tcp_tw_recycle

  • Método 2: Utilice el archivo /etc/sysctl.conf.

    Ejecute el siguiente comando para ver todos los parámetros que han tenido efecto en el sistema:

    /usr/sbin/sysctl -a

    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_max_tw_buckets = 4096
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_keepalive_time = 1800
    net.ipv4.tcp_fin_timeout = 30
    ......
    net.ipv4.tcp_keepalive_time = 1200
    net.ipv4.ip_local_port_range = 1024 65000
    net.ipv4.tcp_max_syn_backlog = 8192
    net.ipv4.tcp_rmem = 16384 174760 349520
    net.ipv4.tcp_wmem = 16384 131072 262144
    net.ipv4.tcp_mem = 262144 524288 1048576
    ......

Modificación de la configuración del parámetro del kernel

  • Método 1: Ejecute el comando echo de /proc/sys para modificar el archivo para los parámetros del kernel de destino.

    Los valores de los parámetros cambiados con este método solo tienen efecto durante la ejecución actual y se restablecerán después de reiniciar el sistema. Para hacer que la modificación surta efecto permanentemente, consulte el método 2.

    /proc/sys/ es un directorio pseudo generado después de iniciar el kernel de Linux. La carpeta net de este directorio almacena todos los parámetros del kernel que han tenido efecto en el sistema. La estructura del árbol de directorios se determina basándose en los nombres de parámetros completos. Por ejemplo, net.ipv4.tcp_tw_recycle corresponde al archivo /proc/sys/net/ipv4/tcp_tw_recycle y el contenido del archivo es el valor del parámetro.

    Por ejemplo:

    Para cambiar el valor net.ipv4.tcp_tw_recycle a 0, ejecute el siguiente comando:

    echo "0" > /proc/sys/net/ipv4/tcp_tw_recycle

  • Método 2: Utilice el archivo /etc/sysctl.conf.
    Los valores de los parámetros modificados con este método tienen efecto permanentemente.
    1. Ejecute el siguiente comando para cambiar el valor de un parámetro especificado:

      /sbin/sysctl -w kernel.domainname="example.com"

      Por ejemplo:

      sysctl -w net.ipv4.tcp_tw_recycle="0"

    2. Ejecute el siguiente comando para cambiar el valor del parámetro en el archivo /etc/sysctl.conf:

      vi /etc/sysctl.conf

    3. Ejecute el siguiente comando para que la configuración surta efecto:

      /sbin/sysctl -p