Pergunta

Depois de ativar a compactação GZIP no meu servidor Apache (mod_deflate), encontrei consistentemente que o usuário final estava sendo servido em média 200 ms mais lento do que as respostas não compactadas.

Isso foi inesperado, então modifiquei a diretiva de compactação para comprimir apenas respostas de texto/html, acionei o Wireshark e olhei para o despejo de rede antes e depois da compactação.

Aqui estão minhas observações de um PEGUE com tráfego mínimo na rede

Antes da compressão

 
Transactions on the wire: 46

Total time for 46 trans: 791ms
  i. TCP seq/ack:       14ms
 ii. 1st data segment: 693ms 
iii. Remaining:         83ms (27/28 data units transferred + tcp/ip handshakes)

Após a compressão

 
Transactions on the wire: 10

Total time for 46 trans: 926ms
  i. TCP seq/ack:       14ms
 ii. 1st data segment: 746ms 
iii. Remaining:        165ms  (5 out of 6 data units transfered)

Depois que a compressão foi definida, é claro e compreensível que o número de transações no fio seja significativamente menor do que o não compactado.

No entanto, a unidade de dados compactada levou muito mais tempo para transferir de origem para destino.

Parece que o trabalho adicional de compressão está compreensivelmente levando tempo, mas não consegue entender por que cada dados enviados foi significativamente mais lento quando comprimido.

Meu entendimento do processo de compressão é:

  1. GET Request is received by Apache
  2. Apache identifies resource
  3. Compress the resource
  4. Respond with compressed response

Com esse esquema, eu presumiria que a terceira etapa é (a etapa antes do primeiro segmento da resposta levaria mais tempo, já que somos - compactação + resposta - Mas o restante dos pedaços que eu presumi levar em média a igual tempo como os pedaços não compactados, mas não são.

Alguém pode me dizer o porquê ... ou sugerir uma maneira melhor de analisar esse cenário. Alguém também tem uma comparação antes e depois ... eu apreciaria qualquer feedback/comentários/perguntas

Foi útil?

Solução

Eu estava usando um teste insuficiente para comparar os dois cenários (acho que menos de 100 recursos). Com testes suficientes - mais de 6000 URLs, mostrou que o tempo de resposta compactado ao primeiro byte foi mais rápido por 200 milissegundos no serviço de texto/html, onde o TTLB foi mais rápido por 25 milissegundos em média.

Não carreguei isso testei isso, o que pretendo fazer e atualizar esta resposta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top