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.
Atualizado em 2024-11-28 GMT+08:00

Modificação de parâmetros do nó de kernel

Os parâmetros padrão do kernel do Linux podem não satisfazer todos os usuários. Você pode modificar o arquivo de configuração /etc/sysctl.conf no nó para modificar os parâmetros do kernel.

  • Os comandos para modificar parâmetros do sistema de nó são válidos somente quando imagens públicas são usadas. Os comandos fornecidos neste documento são apenas para referência quando imagens privadas são usadas.
  • Depois que o nó for reiniciado, execute o comando sysctl -p para atualizar o valor do parâmetro.
Tabela 1 Parâmetros do kernel de um nó

Parâmetro

Localização do parâmetro

Descrição

Valor recomendado

file-max

/etc/sysctl.conf

Número máximo de alças de arquivo no sistema, que podem ser ajustadas conforme necessário.

Obtenção do parâmetro:

sysctl fs.file-max

fs.file-max=1048576

nf_conntrack_buckets

nf_conntrack_max

/etc/sysctl.conf

Capacidade da tabela de rastreamento de conexão, que pode ser ajustada conforme necessário.

Uso do bucket =[nf_conntrack_count]/[nf_conntrack_buckets]

Se o uso da CPU for maior que 0,7 por um longo período de tempo, aumente o valor dos buckets para diminuir o uso da CPU para menos de 0,7.

Obtenção do parâmetro:

sysctl net.netfilter.nf_conntrack_count
sysctl net.netfilter.nf_conntrack_buckets
sysctl net.netfilter.nf_conntrack_max
NOTA:

Observação: net.netfilter.nf_conntrack_buckets no EulerOS 2.3, EulerOS 2.5 e CentOS 7.6 não podem ser modificados editando /etc/sysctl.conf, você pode modificar buckets modificando /sys/module/nf_conntrack/parameters/hashsize.

O valor padrão é definido com base no tamanho da memória do nó. Para alterar o valor, consulte a seguinte fórmula:

  • net.netfilter.nf_conntrack_buckets = [nf_conntrack_count] / 0.7
  • net.netfilter.nf_conntrack_max = 4* [nf_conntrack_buckets]

net.netfilter.nf_conntrack_tcp_timeout_close

/etc/sysctl.conf

Tempo de expiração da entrada da conexão no estado de fechamento na tabela de rastreamento de conexão. Diminuir o tempo de expiração pode acelerar a reciclagem.

Obtenção do parâmetro:

sysctl net.netfilter.nf_conntrack_tcp_timeout_close

net.netfilter.nf_conntrack_tcp_timeout_close=3

net.netfilter.nf_conntrack_tcp_be_liberal

/etc/sysctl.conf

O valor do parâmetro é 0 ou 1.

  • 0: a função está desativada. Todos os pacotes RST que não estão na janela TCP são marcados como inválidos.
  • 1: a função está ativada. Somente os pacotes RST que não estão na janela TCP são marcados como inválidos. Nos contêineres, habilitar esse parâmetro pode impedir que a largura de banda das conexões TCP que foram convertidas usando NAT seja limitada.

Obtenção do parâmetro:

sysctl net.netfilter.nf_conntrack_tcp_be_liberal

net.netfilter.nf_conntrack_tcp_be_liberal=1

tcp_keepalive_time

/etc/sysctl.conf

Intervalo para enviar mensagens de detecção de Keepalive através de TCP. Se esse parâmetro for definido com um valor grande, as conexões TCP podem ser suspensas na fase Close_wait por um longo tempo, esgotando os recursos do sistema.

Obtenção do parâmetro:

sysctl net.ipv4.tcp_keepalive_time

net.ipv4.tcp_keepalive_time=600

tcp_max_syn_backlog

/etc/sysctl.conf

Número máximo de semiconexões TCP, ou seja, o número máximo de conexões na fila SYN_RECV.

Obtenção do parâmetro:

sysctl net.ipv4.tcp_max_syn_backlog

net.ipv4.tcp_max_syn_backlog=8096

tcp_max_tw_buckets

/etc/sysctl.conf

Especifica o número máximo de soquetes no estado de espera de tempo que podem existir a qualquer momento. Se o valor do parâmetro for muito grande, os recursos do nó podem estar esgotados.

Obtenção do parâmetro:

sysctl net.ipv4.tcp_max_tw_buckets

net.ipv4.tcp_max_tw_buckets=5000

net.core.somaxconn

/etc/sysctl.conf

Número máximo de conexões TCP e tamanho máximo da fila ESTABLISHED. Se o valor do parâmetro for muito pequeno, o valor pode ser insuficiente.

Obtenção do parâmetro:

sysctl net.core.somaxconn

net.core.somaxconn=32768

max_user_instances

/etc/sysctl.conf

Número máximo de instâncias de inotify permitidas para cada usuário. Se o valor do parâmetro for muito pequeno, o número de instâncias de inotify pode ser insuficiente nos contêineres.

Obtenção do parâmetro:

sysctl fs.inotify.max_user_instances

fs.inotify.max_user_instances=8192

max_user_watches

/etc/sysctl.conf

Número máximo de diretórios de todas as instâncias de monitoramento. Se o valor do parâmetro for muito pequeno, o número de diretórios pode ser insuficiente nos contêineres.

Obtenção do parâmetro:

sysctl fs.inotify.max_user_watches

fs.inotify.max_user_watches=524288

netdev_max_backlog

/etc/sysctl.conf

Tamanho da fila de recebimento de pacotes da pilha de protocolos de rede. Se o valor do parâmetro for muito pequeno, o tamanho da fila pode ser insuficiente.

Obtenção do parâmetro:

sysctl net.core.netdev_max_backlog

net.core.netdev_max_backlog=16384

net.core.wmem_max

net.core.rmem_max

/etc/sysctl.conf

Tamanho da memória (bytes) do buffer de envio e recebimento. Se este parâmetro estiver definido como um valor pequeno, o tamanho da memória poderá ser insuficiente em cenários de arquivos grandes.

Obtenção do parâmetro:

sysctl net.core.wmem_max
sysctl net.core.rmem_max

net.core.wmem_max=16777216

net.core.rmem_max=16777216

net.ipv4.neigh.default.gc_thresh1

net.ipv4.neigh.default.gc_thresh2

net.ipv4.neigh.default.gc_thresh3

/etc/sysctl.conf

Otimização da coleta de lixo de entradas ARP.

Obtenção do parâmetro:

sysctl net.ipv4.neigh.default.gc_thresh1
sysctl net.ipv4.neigh.default.gc_thresh2
sysctl net.ipv4.neigh.default.gc_thresh3

net.ipv4.neigh.default.gc_thresh1=0

net.ipv4.neigh.default.gc_thresh2=4096

net.ipv4.neigh.default.gc_thresh3=8192

vm.max_map_count

/etc/sysctl.conf

Se este parâmetro é ajustado a um valor pequeno, uma mensagem é indicada indicando que o espaço é insuficiente durante a instalação de ELK.

Obtenção do parâmetro:

sysctl vm.max_map_count

vm.max_map_count=262144

Modificação de parâmetros de kernel de um nó

Tabela 1 lista os parâmetros do kernel dos nós. A seguir, descrevemos como alterar o valor de tcp_keepalive_time, que indica o intervalo para enviar mensagens de detecção de Keepalive por TCP.

  1. Faça logon no nó e verifique o arquivo /etc/sysctl.conf.

    cat /etc/sysctl.conf

  2. Modifique o parâmetro net.ipv4.tcp_keepalive_time. net.ipv4.tcp_keepalive_time=600 indica o nome do parâmetro do kernel e o valor recomendado. Para obter detalhes sobre o valor recomendado, consulte Tabela 1.

    Para modificar outros parâmetros do kernel, substitua os nomes e valores de parâmetros nos comandos, referindo-se a Tabela 1.

    • Se net.ipv4.tcp_keepalive_time tiver sido definido no arquivo sysctl.conf, execute o seguinte comando para alterar o valor:
      sed -i "s/net.ipv4.tcp_keepalive_time=[0-9]*$/net.ipv4.tcp_keepalive_time=600/g" /etc/sysctl.conf && sysctl -p
    • Se net.ipv4.tcp_keepalive_time não estiver definido no arquivo sysctl.conf, execute o seguinte comando para o adicionar:
      echo net.ipv4.tcp_keepalive_time=600 >> /etc/sysctl.conf && sysctl -p

  3. Execute o comando em Tabela 1 para verificar se a modificação foi bem-sucedida. Se o valor retornado for o mesmo que o modificado, a modificação será bem-sucedida.

    # sysctl net.ipv4.tcp_keepalive_time
    net.ipv4.tcp_keepalive_time = 600

Configurar automaticamente os parâmetros do kernel ao criar um nó ou um pool de nós

Você pode definir o script a ser executado após a criação de um nó ou pool de nós. Ao criar um nó ou um pool de nós, você pode usar o script para configurar os parâmetros do kernel.

O parâmetro tcp_keepalive_time é usado como um exemplo para descrever como alterar o intervalo para enviar mensagens de detecção de Keepalive por TCP. O valor é o valor recomendado em Tabela 1.

  1. Confirme o sistema operacional do nó ou pool de nós a ser criado, por exemplo, CentOS 7.6.
  2. Teste manualmente os comandos de script em nós no mesmo cluster e executando o mesmo sistema operacional. Para obter detalhes sobre como executar manualmente o script, consulte Modificação de parâmetros de kernel de um nó.
  3. Ao criar um nó ou um pool de nós, escolha Advanced Settings > Post-installation Command para adicionar comandos. (Os comandos a seguir devem ser configurados após a verificação ser bem-sucedida.) Para modificar outros parâmetros do kernel, substitua os nomes e valores de parâmetros nos comandos, referindo-se a Tabela 1.

    • Faça logon no nó e verifique o arquivo /etc/sysctl.conf. Se net.ipv4.tcp_keepalive_time tiver sido definido no arquivo, execute o seguinte comando para alterá-lo:
      sed -i "s/net.ipv4.tcp_keepalive_time=[0-9]*$/net.ipv4.tcp_keepalive_time=600/g" /etc/sysctl.conf && sysctl -p
    • Faça logon no nó e verifique o arquivo /etc/sysctl.conf. Se net.ipv4.tcp_keepalive_time não estiver definido no arquivo, execute o seguinte comando para adicioná-lo:
      echo net.ipv4.tcp_keepalive_time=600 >> /etc/sysctl.conf && sysctl -p

    O comando na figura a seguir é usado apenas como exemplo. Altere-o conforme necessário.

  4. Depois que o nó for criado, faça logon no nó e execute o comando em Tabela 1 para verificar se a modificação foi bem-sucedida.