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.
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_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.
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.
- Faça logon no nó e verifique o arquivo /etc/sysctl.conf.
cat /etc/sysctl.conf
- 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
- Se net.ipv4.tcp_keepalive_time tiver sido definido no arquivo sysctl.conf, execute o seguinte comando para alterar o valor:
- 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.
- Confirme o sistema operacional do nó ou pool de nós a ser criado, por exemplo, CentOS 7.6.
- 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ó.
- 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.
- 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:
- 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.