gzipped Apache响应数据包分析

时间:2009-08-03 20:25:32

标签: apache compression gzip deflate mod-deflate

在我的Apache服务器(mod_deflate)中启用gzip压缩后,我发现最终用户的平均服务时间比未压缩的响应慢200毫秒。

这是出乎意料的,因此我将压缩指令修改为仅压缩文本/ HTML响应,启动wireshark并在压缩之前和之后查看网络转储。

以下是我对 GET 的观察,网络流量最小

压缩前

 
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)

压缩后

 
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)

在设置压缩之后,可以清楚地理解线路上的事务数量明显低于未压缩的事务数量。

但是,压缩数据单元从源到目标的传输时间要长得多。

看起来额外的压缩工作可以理解花费时间,但无法理解为什么每次发送的数据在压缩时显着变慢。

我对压缩过程的理解是:

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

通过这个方案,我会假设第3步是(响应的第一段之前的步骤需要更长的时间,因为我们 - 压缩+响应 - 但其余的我假设的块应该与未压缩的块平均相等,但它们不是。

任何人都可以告诉我原因......或建议更好的方法来分析这种情况。也有人有前后比较......我将不胜感激任何反馈/意见/问题

1 个答案:

答案 0 :(得分:0)

我使用的测试不足以比较两种情况(我认为少于100种资源)。通过足够的测试 - 超过6000个网址,它表明在服务text / html中第一个字节的压缩响应时间快了200毫秒,而TTLB平均速度提高了25毫秒。

我没有加载测试我打算做的这个并更新这个答案。