使用curl调试慢速下载

使用curl调试慢速下载,curl,download,apache2,trace,tcpdump,Curl,Download,Apache2,Trace,Tcpdump,我看到了一个非常奇怪的现象,我不明白。我正试图从我的一台服务器上调试一个下载速度较慢的程序,我使用了来自外部机器的以下命令: curl -w "@aa" -o /dev/null 'http://myserver/bigfile' 其中文件aa包含如下所示的报告格式: DNS lookup : 0.000 Connect to server (TCP) : 0.004 Connect to server

我看到了一个非常奇怪的现象,我不明白。我正试图从我的一台服务器上调试一个下载速度较慢的程序,我使用了来自外部机器的以下命令:

curl -w "@aa" -o /dev/null 'http://myserver/bigfile'
其中文件
aa
包含如下所示的报告格式:

  DNS lookup                          :  0.000
  Connect to server (TCP)             :  0.004
  Connect to server (HTTP/S)          :  0.000
  Time from start until transfer began:  0.004
  Time for redirection (if any)       :  0.000
  Total time before transfer started  :  0.006

         Total time                   :  147.207
         Size of download (bytes)     :  118263829
         Average d/l speed (bytes/s)  :  803383.000
你可以看到下载速度很慢:800 kB/s

但当我添加--trace选项时:

curl --trace /dev/null -w "@aa" -o /dev/null 'http://myserver/bigfile'
我有:

  DNS lookup                          :  0.000
  Connect to server (TCP)             :  0.007
  Connect to server (HTTP/S)          :  0.000
  Time from start until transfer began:  0.007
  Time for redirection (if any)       :  0.000
  Total time before transfer started  :  0.008

         Total time                   :  25.430
         Size of download (bytes)     :  118263829
         Average d/l speed (bytes/s)  :  4650587.000
这是更快的方式!(4.6MB/s)

仅仅通过添加--trace选项,下载速度怎么可能提高很多

(附加说明:使用--trace ascii选项速度更快:最高可达10MB/s!) 我想这个问题应该与web服务器配置有关,但我不确定,我想知道是否有人已经观察到了错误 类似的行为,或者如果您知道apache2配置的哪一部分可以解释这一点。。。谢谢

新信息 我比较了这两种情况下的tcpdump输出,我发现, 如果没有--trace ascii选项,则会有更多重复的ACK数据包,例如:

Flags [.], ack 444361, win 1392, length 0
Flags [.], ack 444361, win 1392, length 0
Flags [.], ack 444361, win 1392, length 0
Flags [.], ack 445649, win 1414, options [nop,nop,TS val 938602294 ecr 2998737861,nop,nop,sack 3 {108830077:108831365}{108818485:108819773}{108821061:108824925}], length 0
还有更多的ACK-SACK,例如:

Flags [.], ack 444361, win 1392, length 0
Flags [.], ack 444361, win 1392, length 0
Flags [.], ack 444361, win 1392, length 0
Flags [.], ack 445649, win 1414, options [nop,nop,TS val 938602294 ecr 2998737861,nop,nop,sack 3 {108830077:108831365}{108818485:108819773}{108821061:108824925}], length 0
没有什么比使用--trace ascii选项的重复ACK或ACK-SACK数据包更好的了。因此,我想问题与最慢情况下的数据包丢失有关。但是这两台机器和网络都是完全相似的,我已经多次重复了这两个实验,所以唯一的区别来自--trace ascii选项