Domanda

Dopo aver abilitato la compressione gzip nel mio server Apache (mod_deflate) ho constatato costantemente che gli utenti finali venivano serviti in media 200 ms più lentamente delle risposte non compresse.

Questo è stato inaspettato, quindi ho modificato la direttiva di compressione per comprimere SOLO le risposte di testo / HTML, ho avviato il wirehark e ho esaminato il dump della rete prima e dopo la compressione.

Ecco le mie osservazioni su un OTTIENI con traffico minimo nella rete

Prima della compressione

 
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)

Dopo la compressione

 
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)

Dopo aver impostato la compressione, è chiaro e comprensibile che il numero di transazioni sul filo è significativamente inferiore a quello non compresso.

Tuttavia, l'unità di dati compressi ha impiegato molto più tempo per il trasferimento dall'origine alla destinazione.

Sembra che l'ulteriore lavoro di compressione stia comprensibilmente prendendo tempo ma non riesca a capire perché ogni dato inviato sia stato significativamente più lento quando è stato compresso.

La mia comprensione del processo di compressione è:

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

Con questo schema, suppongo che il terzo passo sia (il passo prima del primo segmento della risposta richiederebbe un tempo più lungo dal momento che siamo - comprimendo + rispondendo - ma il resto dei pezzi che presumo dovrebbero richiedere in media tempo uguale a quelli non compressi ma non lo sono.

Qualcuno può dirmi perché ... o suggerire un modo migliore per analizzare questo scenario. Qualcuno ha anche un confronto prima e dopo ... Gradirei qualsiasi feedback / commenti / domande

È stato utile?

Soluzione

Stavo usando un test insufficiente per confrontare i due scenari (penso meno di 100 risorse). Con test sufficienti - oltre 6000 url, ha dimostrato che il tempo di risposta compresso al primo byte era più veloce di 200 millisecondi nel servire testo / html, mentre come TTLB era più veloce di 25 millisecondi in media.

Non ho caricato questo test che ho intenzione di fare e aggiornare questa risposta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top