Como otimizar a pilha TCP para o servidor HTTP?

5

Eu tenho um servidor HTTP que serve apenas dois tipos de página: cerca de 10 KB e cerca de 16 KB (ambos compactados, outros arquivos são do CDN). Como a latência é bastante alta ( ping leva mais de 300 ms), eu quero otimizar a pilha TCP para que o cliente receba a página inteira o mais rápido possível.

Assim, tenho uma dupla pergunta:

  • Qual parâmetro eu tenho que alterar (qual valor da janela TCP)?
  • Como mudar em (uma caixa Debian, e para FYI, há um Varnish antes do servidor HTTP).
por jcisio 09.04.2012 / 18:52

2 respostas

5

Se você está preso a essa alta latência, acho que uma coisa que você gostaria de fazer é evitar TCP Slow Start . Por padrão, a pilha TCP irá esperar por um ACK após o envio dos primeiros 3 pacotes, no seu caso isso significa um atraso de 600 ms por causa do tempo de ida e volta. Ele já foi desuso aqui . De acordo com este , não é possível alterar este número facilmente em Linux, exceto a mudança para a versão 2.6.33 do kernel.

Talvez você possa recompilar seu kernel com um valor maior para o parâmetro correto ou mover para um SO que permita usar um valor maior nesse parâmetro (acho que o Solaris pode ser ajustado aqui).

No lado do aplicativo, certifique-se de ativar o HTTP Keep-Alive para evitar o Slow Start em cada solicitação HTTP.

    
por 09.04.2012 / 21:27
0

Eu não acho que há muito a fazer com relação a TCP / IP específico e outras configurações relacionadas à rede que você pode alterar no kernel para diminuir substancialmente a latência, ou seja, reduzi-lo de 300 ms para menos de 100 ms. A menos que algo seja configurado incorretamente para começar, isso causa atraso ou o servidor está excessivamente ocupado (ou um problema de hardware).

Você precisa fornecer mais dados, como traceroutes, para o seu servidor, além de resultados de ping para e do seu servidor, além de qualquer outra coisa que possa mostrar possíveis razões para tal latência.

    
por 09.04.2012 / 20:52