Ativar KeepAlive ou não?

9

Qual é o consenso de manter o KeepAlive em um site Magento de alto tráfego? Parece que a maioria das pessoas recomenda tê-lo ativado, mas o Magento declara deixá-lo em seu Maximizing Performance and Scalability with Magento Enterprise Edition, afirmam eles.

"Quando um servidor Web está sob uma carga pesada, manter as conexões persistentes se torna desvantajoso, portanto, a diretiva KeepAlive sempre deve ser desativada"

Pensamentos?

Jeremy Miller
fonte

Respostas:

4

Ótima pergunta!

Tradicionalmente, o KeepAlive era uma coisa boa porque reduz significativamente a sobrecarga de TCP de um carregamento geral de páginas, onde muitas solicitações (como todas as imagens, css, js) estão sendo atendidas em um servidor. Se sua página possui 85 ativos, são 85 handshakes TCP adicionais de três vias e a latência aumenta. Muitos anos atrás, com conexões mais lentas à Internet, isso era muito mais importante do que é agora, embora ainda seja bastante relevante para navegadores móveis ou conexões de latência lenta / alta.

O impacto mencionado aqui refere-se à quantidade de tempo em que essas conexões TCP são mantidas abertas e se isso pode esgotar rapidamente os processos filhos do Apache. A maioria dos padrões que eu vi são:

KeepAliveTimeOut 15
MaxClients 256

Isso significa que, se eu tivesse 256 navegadores diferentes solicitando conteúdo nos mesmos 15 segundos, o 257º cliente teria que aguardar a queda das conexões. Não é bom - isso não é especialmente tráfego intenso, por isso explica esse conselho. Também pode levar a aumentar o MaxClients para lidar, o que pode consumir muita memória. Quando uso KeepAlives, geralmente defino KeepAliveTimeout como 2 ou 3 segundos; é o tempo ocioso entre solicitações, e não o tempo todo para todas as solicitações.

Se você estiver usando o KeepAlive, há um ato de equilíbrio entre o KeepAliveTimeout, o MaxClients e os recursos do servidor. Para ajudar nisso, um 'serviço httpd / apache2 fullstatus' mostrará o número de conexões que estão sendo usadas pelo KeepAlives a qualquer momento - indicado com o 'K' maiúsculo.

Para o Magento, porém, acho que você não precisa do KeepAlives.

O que você deve fazer se tiver um site corporativo de tráfego muito alto é usar uma CDN para o seu conteúdo estático.

Se você está vendendo em vários países, o uso de uma CDN não apenas acelera o carregamento geral de páginas para seus clientes (o que é bom), mas também reduz massivamente a largura de banda que chega ao seu servidor. As configurações em Sistema> Configuração> Web> [Des] seguro tornam realmente trivial a integração de qualquer CDN para mídia, capa e JavaScript. Essa será a maior parte das solicitações HTTP reais e, como bônus, você pode usar diferentes registros DNS para paralelizar downloads entre nomes de host. Se você estiver fazendo isso corretamente, essas solicitações mal tocarão no servidor, portanto, não haverá mais necessidade realpara KeepAlive. Nesse caso, você deve desativar o KA; não queremos manter a conexão ativa quando sabemos que o restante do conteúdo está sendo veiculado de outro lugar. Se você deseja uma recomendação independente da CDN: o CloudFlare é fantástico e você ainda recebe o SSL com o pacote gratuito.

Ao usar um CDN como este, ou se você estiver usando qualquer outro tipo de proxy reverso (como o Varnish), seus KeepAlives HTTP do Apache são basicamente irrelevantes.

Para resumir, concordo que você provavelmente deve desativar o KeepAlive para evitar saturar os processos do Apache sob carga, mas definitivamente usar uma CDN ou outro proxy reverso para os ativos, para manter o carregamento da página o mais rápido possível.

Will Parsons
fonte
11
Keepalives ainda são relevantes durante uma retirada de origem de uma CDN. A ativação / desativação não deve ser tomada de ânimo leve e deve ser exaustivamente testada. Eu defendia a redução de solicitações, emagrecimento de ativos antes mesmo de considerar uma CDN - mal configurada; elas podem facilmente tornar as lojas mais lentas, do que mais rápidas.
Ben Lessani - Sonassi
Como definir o sistema local de configuração keepalive para o servidor XAMPP?
bhavin thummar 23/09/19