O Alibaba Cloud Linux 3 inclui um conjunto de parâmetros de kernel pré-ajustados e otimizados para cargas de trabalho em cloud. Este documento descreve esses padrões e os parâmetros comuns que podem exigir ajuste para sua carga de trabalho específica.
Ajuste os parâmetros do kernel apenas quando tiver dados observados que justifiquem a alteração. Compreenda a função de cada parâmetro antes de modificá-lo, pois o comportamento pode variar entre versões do kernel e tipos de ambiente.
Configurações otimizadas para o Alibaba Cloud Linux 3
Estes parâmetros vêm pré-configurados no Alibaba Cloud Linux 3. Os valores listados correspondem aos padrões otimizados aplicados pelo sistema operacional.
Melhoria de desempenho
| Parâmetro | Valor | Descrição |
|---|---|---|
net.ipv4.tcp_timeout_init | 1000 | Timeout inicial de retransmissão tcp, em milissegundos. Valor mínimo: 2 HZ. > Importante Este é um recurso personalizado do Alibaba Cloud Linux 3. Não há garantia de manutenção de longo prazo. Obsoleto no Alibaba Cloud Linux 4 e versões posteriores. |
net.ipv4.tcp_synack_timeout_init | 1000 | Timeout inicial para retransmissão SYN-ACK, em milissegundos. Valor mínimo: 2 HZ. Após a primeira retransmissão, o timeout dobra. > Importante Este é um recurso personalizado do Alibaba Cloud Linux 3. Não há garantia de manutenção de longo prazo. Obsoleto no Alibaba Cloud Linux 4 e versões posteriores. |
net.ipv4.tcp_synack_timeout_max | 120000 | Timeout máximo de retransmissão SYN-ACK, em milissegundos. Valor mínimo: 2 HZ. Cada retransmissão dobra o timeout, começando em tcp_synack_timeout_init, até atingir este limite. > Importante Este é um recurso personalizado do Alibaba Cloud Linux 3. Não há garantia de manutenção de longo prazo. Obsoleto no Alibaba Cloud Linux 4 e versões posteriores. |
net.ipv4.tcp_ato_min | 40 | Timeout mínimo de ACK, em milissegundos. Valores válidos: 4–200 ms. > Importante Este é um recurso personalizado do Alibaba Cloud Linux 3. Não há garantia de manutenção de longo prazo. Obsoleto no Alibaba Cloud Linux 4 e versões posteriores. |
net.ipv4.tcp_init_cwnd | 10 | Tamanho inicial da janela de congestionamento tcp. > Importante Este é um recurso personalizado do Alibaba Cloud Linux 3. Não há garantia de manutenção de longo prazo. Obsoleto no Alibaba Cloud Linux 4 e versões posteriores. |
net.ipv4.tcp_synack_retries | 2 | Número de retransmissões SYN-ACK quando o servidor não recebe o ACK final. Em uma rede de boa qualidade, três tentativas levam aproximadamente 7 segundos antes que a conexão seja descartada. |
net.ipv4.tcp_slow_start_after_idle | 0 | Controla se o slow start reinicia após uma conexão tcp ficar ociosa. 0 desativa o reinício, preservando a janela de congestionamento durante períodos de inatividade. 1 ativa o reinício. Para conexões de longa duração com rajadas de tráfego intermitentes, defina como 0 para evitar penalidades de throughput após breves intervalos de ociosidade. |
/sys/kernel/mm/transparent_hugepage/hugetext_enabled | 0 | Controla o recurso Hugetext, que mapeia segmentos de código de binários e bibliotecas dinâmicas usando huge pages para reduzir falhas de iTLB. Valores válidos: 0 = desativado; 1 = huge pages apenas para binários e bibliotecas dinâmicas; 2 = apenas huge pages anônimas executáveis; 3 = ambos. Ative o Hugetext para cargas de trabalho com grandes segmentos de código, como bancos de dados e aplicações extensas, a fim de reduzir falhas de iTLB e melhorar o desempenho. > Importante Este é um recurso personalizado do Alibaba Cloud Linux 3. Não há garantia de manutenção de longo prazo. |
Melhoria na utilização de recursos
| Parâmetro | Valor | Descrição |
|---|---|---|
net.ipv4.tcp_syn_retries | 4 | Número de retransmissões SYN quando o cliente não recebe um SYN-ACK. Com um timeout inicial de retransmissão (RTO) de 1 segundo, quatro retransmissões levam cerca de 15 segundos, e a conexão expira após aproximadamente 31 segundos. |
net.ipv4.tcp_retries2 | 8 | Máximo de retransmissões para uma conexão tcp ativa que deixa de receber ACKs. Com um RTO inicial de 200 ms, oito retransmissões levam cerca de 51 segundos, e o timeout final ocorre após aproximadamente 102 segundos. |
net.ipv4.tcp_tw_timeout | 60 | Timeout para um socket tcp no estado TIME_WAIT, em segundos. Valores válidos: 1–600 segundos. Para mais informações, consulte Modify the TCP TIME-WAIT timeout period. > Importante Este é um recurso personalizado do Alibaba Cloud Linux 3. Não há garantia de manutenção de longo prazo. Obsoleto no Alibaba Cloud Linux 4 e versões posteriores. |
net.ipv4.tcp_max_tw_buckets | 5000 | Número máximo de conexões tcp permitidas simultaneamente no estado TIME_WAIT. Quando as conexões em TIME_WAIT esgotam o intervalo de portas definido por net.ipv4.ip_local_port_range, novas chamadas connect() falham. Aumente este valor se observar erros TCP: time wait bucket table overflow. Para detalhes, consulte Why do many "TCP: time wait bucket table overflow" errors occur on a Linux ECS instance? |
Segurança de rede
| Parâmetro | Valor | Descrição |
|---|---|---|
net.ipv4.conf.all.rp_filter | 0 | Filtragem de caminho reverso para todas as placas de interface de rede (NICs) atuais. Valores válidos: 0 = desativado; 1 = estrito (descarta o pacote se seu caminho reverso não corresponder à interface receptora); 2 = flexível (descarta apenas se o endereço de source for inalcançável por qualquer interface). > Aviso Definir como |
net.ipv4.conf.default.rp_filter | 0 | Filtragem de caminho reverso aplicada a NICs recém-adicionadas. Mesmos valores válidos e aviso de net.ipv4.conf.all.rp_filter. |
net.ipv4.conf.default.arp_announce | 2 | Seleção de IP de source para requisições ARP enviadas por NICs recém-adicionadas. Valores válidos: 0 = qualquer endereço local em qualquer interface; 1 = preferir um IP de source na mesma sub-rede do destino; 2 = deve usar o IP da interface de saída (nenhum ARP é enviado se não houver endereço adequado). |
net.ipv4.conf.all.arp_announce | 2 | Seleção de IP de source para requisições ARP enviadas por todas as NICs atuais. Mesmos valores válidos de net.ipv4.conf.default.arp_announce. |
net.ipv4.tcp_syncookies | 1 | Proteção contra SYN flood. Valores válidos: 0 = desativado; 1 = ativado (aciona apenas quando o backlog de SYN está cheio); 2 = ativado incondicionalmente (apenas para testes). > Importante SYN cookies são um mecanismo de fallback, não uma solução para servidores sobrecarregados. Se avisos de SYN flood aparecerem nos logs, mas a source for tráfego legítimo e não um ataque, ajuste |
Outras configurações comuns do sistema para o Alibaba Cloud Linux 3
Estes parâmetros mantêm os padrões upstream. Use-os como referência ao diagnosticar problemas de desempenho ou recursos — ajuste apenas quando tiver dados observados que justifiquem a mudança.
Melhoria de desempenho
| Parâmetro | Valor padrão | Descrição |
|---|---|---|
net.ipv4.ip_local_port_range | 32768 60999 | Intervalo de portas efêmeras para conexões tcp/UDP de saída. Quando a maioria das portas nesse intervalo está em uso, a busca linear do kernel por uma porta livre aumenta a utilização da cpu. Amplie esse intervalo se observar alto uso de cpu devido à exaustão de portas ou se chamadas connect() começarem a retornar EADDRNOTAVAIL. |
net.ipv4.tcp_rmem | 4096 131072 6291456 | Tamanho do buffer de recepção por socket tcp, em bytes: mínimo, padrão e máximo. O valor padrão independe do tipo de instância. Aumente esses valores em instâncias com muita memória e conexões sustentadas de alta largura de banda. > Importante Definir um máximo muito grande pode consumir memória significativa. Cada socket pode usar até o valor máximo — por exemplo, 1 milhão de sockets a 6 MiB cada podem exigir até 6 TiB de espaço de buffer. |
net.ipv4.tcp_wmem | 4096 16384 4194304 | Tamanho do buffer de envio por socket tcp, em bytes: mínimo, padrão e máximo. Mesma orientação de ajuste de net.ipv4.tcp_rmem. |
net.core.netdev_max_backlog | 1000 | Comprimento máximo da fila de buffer de socket (skb) por cpu, usada para receive packet steering (RPS) e tráfego de loopback ou veth. Aumente se observar perda de pacotes em interfaces de loopback ou veth com alto throughput. |
net.core.somaxconn | 4096 | Comprimento máximo da fila de backlog de escuta por socket. Para aplicações como NGINX que lidam com grande volume de conexões de curta duração, aumente este valor. Para verificar se o ajuste é necessário, execute ss -ntl e compare o Recv-Q (backlog atual) com o Send-Q (limite de backlog do socket). Se o Recv-Q se aproximar do Send-Q, aumente este parâmetro. |
net.core.rmem_max | 212992 | Tamanho máximo do buffer de recepção do socket, em bytes. Para tcp, esse limite aplica-se apenas quando uma aplicação chama setsockopt(SO_RCVBUF) explicitamente; caso contrário, net.ipv4.tcp_rmem controla o limite. Para UDP com muitas conexões em um único socket, aumente este valor. |
net.core.wmem_max | 212992 | Tamanho máximo do buffer de envio do socket, em bytes. Para tcp, esse limite aplica-se apenas quando uma aplicação chama setsockopt(SO_SNDBUF) explicitamente; caso contrário, net.ipv4.tcp_rmem controla o limite. |
/sys/block/<device>/queue/nomerges | 0 | Controla o comportamento de mesclagem de I/O para o dispositivo. Valores válidos: 0 = todos os tipos de mesclagem ativados; 1 = apenas mesclagens simples de uma vez (desativa mesclagens complexas); 2 = todas as mesclagens desativadas. A maioria das cargas de trabalho beneficia-se da mesclagem. Para cargas de trabalho com I/O puramente aleatório, onde a chance de requisições mescláveis é baixa, defina como 2 para economizar ciclos de cpu gastos na verificação de mesclagens. |
/sys/block/<device>/queue/read_ahead_kb | 4096 | Tamanho de leitura antecipada para leituras sequenciais, em KB. O padrão do kernel é 128 KB; o service tuned aumenta para 4.096 KB. Para cargas de trabalho sequenciais (leitura de arquivos grandes, processamento de logs), mantenha o valor mais alto ou aumente ainda mais. Para cargas de trabalho de I/O aleatório, reduza para 128 KB para evitar pré-busca de dados que não serão utilizados. |
/sys/block/<device>/queue/rq_affinity | 1 | Define qual cpu processa a conclusão de I/O. |
Para rq_affinity, as compensações entre os valores são:
|
Valor |
Comportamento |
Mais indicado para |
|
|
A conclusão executa na cpu que acionou a interrupção |
Menor latência em cargas de trabalho com muitas interrupções |
|
|
A conclusão executa em qualquer cpu no mesmo soquete do solicitante (amigável ao cache, mas a primeira cpu do grupo recebe maior carga) |
Maioria das cargas de trabalho — padrão e recomendado |
|
|
A conclusão executa exatamente na cpu que submeteu o I/O (carga de cpu balanceada, eficiência ligeiramente menor que |
Cargas de trabalho de alta concorrência com muitos núcleos |
| Parâmetro | Valor padrão | Descrição |
|---|---|---|
/sys/block/<device>/queue/scheduler | mq-deadline (fila única) ou none (múltiplas filas) | Agendador de I/O. O Alibaba Cloud Linux 3 suporta mq-deadline, kyber, bfq e none. A camada blk-mq seleciona mq-deadline para dispositivos de fila única e none para dispositivos de múltiplas filas. Para cargas de trabalho que exigem baixa latência de leitura, mude para kyber e configure o valor de latência alvo. |
/sys/kernel/mm/pagecache_limit/enabled | 0 | Ativa ou desativa o page cache limit feature em todo o sistema. 0 = desativado; 1 = ativado. > Importante Este é um recurso personalizado do Alibaba Cloud Linux 3. Não há garantia de manutenção de longo prazo. |
/sys/fs/cgroup/memory/memory.pagecache_limit.enable | 0 | Ativa ou desativa o page cache limit feature para um memcg específico. 0 = desativado para este memcg; 1 = ativado. |
/sys/fs/cgroup/memory/memory.pagecache_limit.size | 0 | Limite de uso de page cache para a árvore memcg atual, em bytes. Valores válidos: de 0 até o valor de memory.limit_in_bytes para o memcg atual. Definir como 0 desativa o page cache limit feature para este memcg, independentemente da chave global ou por memcg. Um valor diferente de zero estabelece o limite superior de uso de page cache para a árvore memcg. |
Segurança de rede
|
Parâmetro |
Valor padrão |
Descrição |
|
|
0 |
Controla o comportamento de resposta ARP para todas as NICs atuais. Valores válidos: |
|
|
0 |
Comportamento de resposta ARP para NICs recém-adicionadas. Mesmos valores válidos e comportamento de |
|
|
0 |
Ativa ou desativa o encaminhamento de pacotes IPv4. |
Utilização de recursos
|
Parâmetro |
Valor padrão |
Descrição |
||
|
|
60 |
Duração que uma conexão tcp permanece no estado FIN_WAIT2 após o lado local iniciar o fechamento, em segundos. O padrão de 60 segundos é adequado para a maioria das cargas de trabalho. Se observar um grande número de conexões FIN_WAIT2 (verifique com |
grep FIN_WAIT2 |
wc -l`), reduza este valor para recuperar portas mais rapidamente. Para mais informações, consulte Why does a Linux ECS instance have many TCP connections in the FIN_WAIT2 state? |
|
|
2 |
Controla a reutilização de sockets TIME_WAIT para novas conexões. |
||
|
|
7200 |
Intervalo entre sondas keepalive quando o keepalive tcp está ativado, em segundos. As sondas keepalive confirmam se a extremidade remota de uma conexão ociosa ainda está acessível. |
Limites do sistema
|
Parâmetro |
Valor padrão |
Descrição |
|
|
65536 |
Número máximo de requisições de I/O assíncrono (AIO) simultâneas em todo o sistema. O kernel acumula o argumento |
|
|
Definido com base na memória reservada na inicialização |
Número máximo de handles de arquivo permitidos pelo kernel em todo o sistema. Até 10% da memória reservada pode ser usada para handles de arquivo. O mínimo é 8.192 (valor |
|
|
1048576 |
Número máximo de handles de arquivo abertos por processo. O limite por processo definido por |
Monitoramento
| Parâmetro | Valor padrão | Descrição |
|---|---|---|
net.netfilter.nf_conntrack_max | 262144 | Número máximo de entradas de rastreamento de conexão na tabela hash nf_conntrack. Calculado como 4 × net.netfilter.nf_conntrack_buckets. Aumente se as aplicações sofrerem perda intermitente de pacotes e o log do kernel mostrar nf_conntrack: table full, dropping packet. Para mais informações, consulte What do I do if applications on an ECS instance occasionally experience packet loss and the kernel log contains the "kernel: nf_conntrack: table full, dropping packet" error? |
net.netfilter.nf_conntrack_tcp_timeout_time_wait | 120 | Tempo que o nf_conntrack rastreia uma conexão tcp no estado TIME_WAIT, em segundos. |
net.netfilter.nf_conntrack_tcp_timeout_established | 432000 | Tempo que o iptables mantém uma conexão tcp estabelecida na tabela de rastreamento antes de fechá-la por inatividade, em segundos. |
fs.inotify.max_queued_events | 16384 | Número máximo de eventos que podem entrar na fila de uma instância inotify antes de serem descartados. O inotify é o subsistema do kernel para monitorar eventos de arquivos e diretórios. Use o padrão, a menos que sua aplicação processe eventos de arquivo em grandes lotes. |
fs.inotify.max_user_instances | 128 | Número máximo de instâncias inotify que um usuário pode criar. Esse limite evita que processos descontrolados consumam memória excessiva ao criar muitas instâncias de monitoramento. Use o padrão, a menos que sua aplicação exija mais instâncias. |
fs.inotify.max_user_watches | 8192 | Número máximo de watches que um usuário pode adicionar em todas as instâncias inotify. Um watch é um par (caminho, máscara de evento) que informa ao inotify quais eventos relatar para um arquivo ou diretório específico. Aumente se sua aplicação monitorar um grande número de arquivos ou diretórios. |
/sys/block/<device>/queue/hang_threshold | 5000 | Limiar de detecção de travamento de I/O, em milissegundos. O kernel sinaliza uma operação de I/O como travada se ela não for concluída dentro desse tempo. Ajuste conforme as características do seu armazenamento e da carga de trabalho. Para mais informações, consulte Detect I/O hangs in the file system and block layer. > Importante Este é um recurso personalizado do Alibaba Cloud Linux 3. Não há garantia de manutenção de longo prazo. |