Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ Elastic Cloud Server/ Perguntas frequentes/ Network Configurations/ Others/ Como visualizar e modificar os parâmetros do kernel de um ECS de Linux?
Atualizado em 2025-01-23 GMT+08:00

Como visualizar e modificar os parâmetros do kernel de um ECS de Linux?

Modifique os parâmetros do kernel somente se as configurações do parâmetro afetarem seus serviços. Os parâmetros do kernel variam dependendo das versões do SO. Se as configurações do parâmetro precisarem ser modificadas,

  • Certifique-se de que as configurações de parâmetro de destino atendam aos requisitos de serviço.
  • Modifique os parâmetros corretos do kernel. Para obter detalhes sobre parâmetros comuns do kernel, consulte Tabela 1.
  • Faça backup dos principais dados do ECS antes de modificar as configurações dos parâmetros do kernel.

Conhecimento de fundo

Tabela 1 Parâmetros comuns do kernel de Linux

Parâmetro

Descrição

net.core.rmem_default

Especifica o tamanho padrão (em bytes) da janela para receber dados de TCP.

net.core.rmem_max

Especifica o tamanho máximo (em bytes) da janela para receber dados de TCP.

net.core.wmem_default

Especifica o tamanho padrão (em bytes) da janela para a transmissão de dados de TCP.

net.core.wmem_max

Especifica o tamanho máximo (em bytes) da janela para transmissão de dados de TCP.

net.core.netdev_max_backlog

Especifica o número máximo de pacotes que podem ser enviados para uma fila quando a taxa na qual cada porta de rede recebe pacotes é mais rápida do que a taxa na qual o kernel processa esses pacotes.

net.core.somaxconn

Define o comprimento máximo da fila de escuta para cada porta no sistema. Este parâmetro aplica-se globalmente.

net.core.optmem_max

Especifica o tamanho máximo do buffer permitido por cada soquete.

net.ipv4.tcp_mem

Usa a pilha de TCP para mostrar o uso de memória em páginas de memória (4 KB em geral).

O primeiro valor é o limite inferior de uso de memória.

O segundo valor é o limite superior da carga adicionada ao buffer quando a memória está sobrecarregada.

O terceiro valor é o limite superior de uso de memória. Quando este valor é atingido, os pacotes podem ser descartados para reduzir o uso de memória. Para um BDP grande, aumente o valor do parâmetro conforme necessário. A unidade deste parâmetro é página de memória, mas não byte.

net.ipv4.tcp_rmem

Especifica a memória usada pelos soquetes para otimização automática.

O primeiro valor é o número mínimo de bytes alocados ao buffer de soquete para receber dados.

O segundo valor é o valor padrão, que é sobrescrito por rmem_default. O tamanho do buffer pode aumentar para este valor quando a carga do sistema não é pesada.

O terceiro valor é o número máximo de bytes alocados ao buffer de soquete para receber dados. Este valor é sobrescrito por rmem_max.

net.ipv4.tcp_wmem

Especifica a memória usada pelos soquetes para otimização automática.

O primeiro valor é o número mínimo de bytes alocados ao buffer de soquete para transmitir dados.

O segundo valor é o valor padrão, que é substituído por wmem_default. O tamanho do buffer pode aumentar para este valor quando a carga do sistema não é pesada.

O terceiro valor é o número máximo de bytes alocados ao buffer de soquete para transmissão de dados. Este valor é sobrescrito por wmem_max.

net.ipv4.tcp_keepalive_time

Especifica o intervalo no qual as mensagens de detecção de keepalive são enviadas em segundos para verificação de conexões TCP.

net.ipv4.tcp_keepalive_intvl

Especifica o intervalo no qual as mensagens de detecção de keepalive são reenviadas em segundos quando nenhuma resposta é recebida.

net.ipv4.tcp_keepalive_probes

Especifica o número máximo de mensagens de detecção de keepalive que são enviadas para determinar uma falha de conexão TCP.

net.ipv4.tcp_sack

Habilita o reconhecimento seletivo (o valor 1 indica habilitado). Esta configuração permite que o transmissor envie novamente apenas pacotes perdidos, melhorando assim o desempenho do sistema. No entanto, essa configuração aumentará o uso da CPU. Sugere-se que você habilite o reconhecimento seletivo para a comunicação WAN.

net.ipv4.tcp_fack

Permite o reconhecimento de encaminhamento para reconhecimento seletivo (SACK), reduzindo assim o congestionamento. Sugere-se que você habilite o reconhecimento de encaminhamento.

net.ipv4.tcp_timestamps

Especifica um carimbo de data/hora de TCP, que adicionará 12 bytes no cabeçalho do pacote de TCP. Essa configuração calcula RTT usando o RFC1323, um método de retransmissão mais preciso após o tempo limite do que a retransmissão. Sugere-se que você habilite esse parâmetro para um desempenho mais alto do sistema.

net.ipv4.tcp_window_scaling

Habilita o dimensionamento de janela baseado em RFC1323 definindo o valor do parâmetro como 1 se a janela de TCP for maior que 64 KB. A janela de TCP máxima é de 1 GB. Este parâmetro tem efeito somente quando o dimensionamento de janela está ativado em ambas as extremidades da conexão TCP.

net.ipv4.tcp_syncookies

Especifica se a sincronização TCP (syncookie) deve ser ativada. Essa configuração impede a sobrecarga de soquete quando um grande número de conexões é tentado configurar. CONFIG_SYN_COOKIES deve estar habilitado no kernel para compilação. O valor padrão é 0, indicando que a sincronização TCP está desabilitada.

net.ipv4.tcp_tw_reuse

Especifica se um soquete TIME-WAIT (porta TIME-WAIT) pode ser usado para novas conexões TCP.

NOTA:

Este parâmetro é válido somente para clientes e tem efeito somente quando net.ipv4.tcp_timestamps está habilitado.

Este parâmetro não pode ser definido como 1 se a NAT estiver ativada. Caso contrário, ocorrerá um erro nos logons remotos do ECS. Para obter detalhes, consulte Por que as conexões com um ECS de Linux usando SSH ou com aplicações no ECS são interrompidas ocasionalmente?

net.ipv4.tcp_tw_recycle

Permite a reciclagem rápida dos soquetes TIME-WAIT.

NOTA:

Este parâmetro só é válido quando net.ipv4.tcp_timestamps está activado.

Não defina este parâmetro para 1 se a NAT estiver ativada. Caso contrário, ocorrerá um erro durante os logons remotos do ECS. Para obter detalhes, consulte Por que as conexões com um ECS de Linux usando SSH ou com aplicações no ECS são interrompidas ocasionalmente?

net.ipv4.tcp_fin_timeout

Especifica o tempo (em segundos) durante o qual uma conexão TCP de soquete desconectada da extremidade local permanece no estado FIN-WAIT-2. Suspensão do processo pode ser causada pela desconexão da extremidade de par, conexão contínua da extremidade de par ou outras razões.

net.ipv4.ip_local_port_range

Especifica os números de porta locais permitidos pelo TCP/UDP.

net.ipv4.tcp_max_syn_backlog

Especifica o número máximo de solicitações de conexão que não são reconhecidas pela extremidade de par e que podem ser armazenadas na fila. O valor padrão é 1024. Se o servidor estiver frequentemente sobrecarregado, tente aumentar o valor.

net.ipv4.tcp_low_latency

Esta opção deve ser desativada se a pilha de TCP/IP for usada para alta taxa de transferência e baixa latência.

net.ipv4.tcp_westwood

Permite que o algoritmo de controle de congestionamento na extremidade do transmissor avalie a taxa de transferência e melhore a utilização geral da largura de banda. Sugere-se que você habilite o algoritmo de controle de congestionamento para comunicação WAN.

net.ipv4.tcp_bic

Permite aumentar o congestionamento binário para redes rápidas de longa distância para que as conexões com operações sendo executadas a uma taxa de Gbit/s possam ser funcionais. Sugere-se ativar o congestionamento do aumento binário para comunicação WAN.

net.ipv4.tcp_max_tw_buckets

Especifica o número de buckets TIME_WAIT, cujo padrão é 180.000. Se o número de buckets exceder o valor padrão, os extras serão limpos.

net.ipv4.tcp_synack_retries

Especifica o número de vezes que os pacotes SYN+ACK são retransmitidos no estado SYN_RECV.

net.ipv4.tcp_abort_on_overflow

Quando este parâmetro é definido como 1, se o sistema receber um grande número de solicitações dentro de um curto período de tempo, mas não conseguir processá-las, o sistema enviará pacotes de redefinição para encerrar as conexões. Recomenda-se que você melhore os recursos de processamento do sistema otimizando a eficiência da aplicação em vez de executar operações de redefinição.

Valor padrão: 0

net.ipv4.route.max_size

Especifica o número máximo de rotas permitidas pelo kernel.

net.ipv4.ip_forward

Encaminha pacotes entre interfaces.

net.ipv4.ip_default_ttl

Especifica o número máximo de saltos que um pacote pode passar.

net.netfilter.nf_conntrack_tcp_timeout_established

Limpa as conexões iptables que estão inativas por um período específico de tempo.

net.netfilter.nf_conntrack_max

Especifica o valor máximo das entradas de hash.

Exibição de parâmetros do kernel

  • Método 1: execute o comando cat em /proc/sys para visualizar o conteúdo do arquivo.

    /proc/sys/ é um pseudo-diretório gerado depois que o kernel do Linux é iniciado. A pasta net neste diretório armazena todos os parâmetros do kernel que entraram em vigor no sistema. A estrutura da árvore de diretórios é determinada com base nos nomes completos dos parâmetros. Por exemplo, net.ipv4.tcp_tw_recycle corresponde ao arquivo /proc/sys/net/ipv4/tcp_tw_recycle e o conteúdo do arquivo é o valor do parâmetro.

    Exemplo:

    Para exibir o valor net.ipv4.tcp_tw_recycle, execute o seguinte comando:

    cat /proc/sys/net/ipv4/tcp_tw_recycle

  • Método 2: use o arquivo /etc/sysctl.conf.

    Execute o seguinte comando para visualizar todos os parâmetros que entraram em vigor no 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
    ......

Modificação de configurações de parâmetro do kernel

  • Método 1: execute o comando echo em /proc/sys para modificar o arquivo para os parâmetros do kernel de destino.

    Os valores de parâmetro alterados usando este método terão efeito somente durante a execução atual e serão redefinidos depois que o sistema for reiniciado. Para que a modificação tenha efeito permanente, consulte o método 2.

    /proc/sys/ é um pseudo-diretório gerado depois que o kernel do Linux é iniciado. A pasta net neste diretório armazena todos os parâmetros do kernel que entraram em vigor no sistema. A estrutura da árvore de diretórios é determinada com base nos nomes completos dos parâmetros. Por exemplo, net.ipv4.tcp_tw_recycle corresponde ao arquivo /proc/sys/net/ipv4/tcp_tw_recycle e o conteúdo do arquivo é o valor do parâmetro.

    Exemplo:

    Para alterar o valor net.ipv4.tcp_tw_recycle para 0, execute o seguinte comando:

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

  • Método 2: use o arquivo /etc/sysctl.conf.
    Os valores de parâmetro alterados usando este método entram em vigor permanentemente.
    1. Execute o seguinte comando para alterar o valor de um parâmetro especificado:

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

      Exemplo:

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

    2. Execute o seguinte comando para alterar o valor do parâmetro no arquivo /etc/sysctl.conf:

      vi /etc/sysctl.conf

    3. Execute o seguinte comando para que a configuração tenha efeito:

      /sbin/sysctl -p