Performance
Linux 不友好的 IIS/ASP.NET :-) : 在 windows 上快速下載但在 linux 上慢
如果我嘗試使用 windows 請求頁面,這個特定的網站 (gops.tay.be) 會快速提供對象,但如果嘗試使用 linux,我會很慢。如果我使用瀏覽器或 curl 沒有區別:
窗戶:
C:\curl>curl http://gops.tay.be/RadControls/Upload/Skins/Office2007/RadUpload.css -w %{time_total} -o 1.txt -s 0,078
Linux:
[root@ ~]# curl http://gops.tay.be/RadControls/Upload/Skins/Office2007/RadUpload.css -w %{time_total} -o 1.txt -s 5.551 [root@ ~]# host gops.tay.be gops.tay.be has address 194.7.31.58 [root@ ~]# ip -s -o r s c |grep 194.7.31.58 194.7.31.58 from 192.168.252.176 via 192.168.252.254 dev eth0 \ cache used 2 age 2sec ipid 0x26de rtt 98ms rttvar 110ms cwnd 10 194.7.31.58 via 192.168.252.254 dev eth0 src 192.168.252.176 \ cache age 8sec ipid 0x26de rtt 98ms rttvar 110ms cwnd 10 local 192.168.252.176 from 194.7.31.58 dev lo src 192.168.252.176 \ cache <local> used 6 age 2sec iif eth0
在 Wireshark 中,兩個下載(會話初始化等)似乎都是相同的,除了 linux has
tcp.options.wscale.multiplier = 4
和 windows has256
.gops.tay.be
伺服器一直tcp.options.wscale.multiplier = 1
都有。從 linux box 下載的任何其他內容都可以正常工作。例如對於
http://cdn.sstatic.net/serverfault/all.css?v=b1f1055f1c12
linux 以 . 開頭tcp.options.wscale.multiplier = 4
並cdn.sstatic.net
具有1024
.什麼會導致這種節流?相比之下,為什麼從 Windows 盒子下載速度如此之快?
差異是由於在 Linux 中使用了 tcp 時間戳,但在 Windows 中沒有。關閉它們會使問題消失。
我不知道為什麼你會因為這個選項而失去數據包。