Descobrir a causa do tcp rcvpruned?

2

Eu recebo alguns pacotes podados de rcv em meus balanceadores de carga por dia e gostaria de saber qual é a causa:

Noentanto,combasenomeuusodotcp_memvstcp_mem,nãoentendoporquealgunspacotesestãosendoremovidos:

cat/proc/sys/net/ipv4/tcp_mem6178080823744012356160

    
por Kyle Brandt 29.04.2014 / 16:15

1 resposta

1

O TCP RcvPruned MIB é incrementado pouco antes de o kernel deixar a função tcp_prune_queue() , resultando na eliminação de pacotes.

Antes disso, o kernel terá tentativas de recolher dados em buffers de soquete (juntar dados e descartar despesas gerais). Primeiro, os dados serão removidos da fila fora de ordem e depois da fila normal em ordem.

Isso significa que seus soquetes estão enfrentando pressão de memória, provavelmente seus buffers de soquete não são grandes o suficiente.

Você disse acima:

net.ipv4.tcp_rmem = 183936 245248 367872

O máximo está longe de ser grande o suficiente. Aumente para 10x esse valor para dar espaço ao kernel para aumentar a memória do soquete como quiser. Aumente net.core.rmem_max , como é usado na contabilidade da janela TCP.

Não sei ao certo como você calculou o tamanho dos seus buffers, mas se você fizer o balanceamento de carga com lotes de tráfego de pacotes pequenos (como solicitações HTTP), a maior parte do uso do buffer ficará sobrecarregada.

Dependendo do kernel que você está executando, há uma explicação diferente para isso. O método "antigo" faz algumas suposições imprecisas, mas acaba por ser bastante indulgente, o "novo" método de contas com precisão e requer buffers para ser dimensionado um pouco maior que o anterior.

O conjunto de correções que muda isso se concentra em torno do cálculo de skb->truesize e IIRC foi aplicado em algum momento entre o kernel 3.0 e 3.10.

Você também desejará verificar o valor de net.ipv4.tcp_mem e certificar-se de não restringir a quantidade de memória total que o TCP pode usar. Este ajuste é medido em páginas , não em bytes. Pessoalmente eu apenas faço todos os valores tão grandes que nunca serão atingidos. Compre mais memória conforme necessário.

    
por 07.10.2014 / 14:43

Tags