![调试服务器传输速率缓慢](https://linux22.com/image/631989/%E8%B0%83%E8%AF%95%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BC%A0%E8%BE%93%E9%80%9F%E7%8E%87%E7%BC%93%E6%85%A2.png)
我尝试以尽可能简单但有据可查的方式解释这一点。这并非是该服务器或我当前 ISP 独有的。多年来,我使用不同的 ISP 时遇到过同样的问题,我的服务器由不同的提供商提供(美国的 GoDaddy、加拿大的 iWeb 和 GloboTech)。唯一常见的是 Windows Server OS(2003 和 2008 r2)。但现在让我们只看看我当前的服务器和当前的 ISP。
问题:
我的本地工作站和远程专用服务器之间的传输速率非常慢。我的服务器使用 100 Mbps 端口,而我的本地工作站使用 50 Mbps 光纤对称连接。
症状:
在 speedtest.net 上针对美国和墨西哥的不同服务器和位置进行测试时,服务器和工作站都获得了出色的结果(非常接近它们的连接速度)。如果我从 Dropbox 下载大文件到我的服务器或工作站,我在单个连接上分别获得 10 MBps 和 5 MBps 的传输速率,根据分别为 100 Mbps 和 50 Mbps 的连接速度,这是正确的。
但是,如果我将文件从我的服务器(通过 HTTP 或 FTP)传输到我的工作站,我甚至无法获得应有的 50 Mbps 速度(5 MBps 传输速率),但我得到的速度相当于 3 Mbps(300 KBps 传输速率)。
我想知道为什么我的传输速率这么慢。我不确定如何调试它。每当我向托管服务提供商提出问题时,他们都会要求我提供 tracert 输出,最后将其归咎于中间的某个服务器。但如果我们考虑我最初所说的内容,这似乎不正确:我在使用 GoDaddy、iWeb 和 GloboTech 的服务器时,以及在使用不同类型的互联网服务时,都遇到过同样的速度/问题。它确实看起来像是服务器区域某处的固定设置。
我做过的测试:
速度测试
这些是来自 speedtest.net 的速度测试,在我的专用服务器中针对不同的远程服务器执行。包括我 ISP 数据中心的服务器墨西哥城:
加拿大:下载速度为 94.64 Mbps,上传速度为 94.87 Mbps http://www.speedtest.net/my-result/3470801975
加利福尼亚州圣何塞:下载速度为 93.58 Mbps,上传速度为 95.48 Mbps http://www.speedtest.net/my-result/3470805341
墨西哥城(服务器位于我自己的 ISP 数据中心):下载速度为 92.99 Mbps,上传速度为 95.39 Mbps http://www.speedtest.net/my-result/3470810269
如果我从本地工作站对相同的服务器运行这些测试,我也会获得接近 50 Mbps 的连接速度。
跟踪
这是最近从我的工作站到我的专用服务器执行的 tracert 输出:
1 <1 ms <1 ms <1 ms 192.168.7.254
2 2 ms 1 ms 1 ms 10.69.32.1
3 * 3 ms 2 ms 10.5.50.174
4 3 ms 2 ms 2 ms 10.5.50.173
5 * 5 ms 3 ms fixed-203-69-2.iusacell.net [189.203.69.2]
6 32 ms 32 ms 32 ms 8-1-33.ear1.Dallas1.Level3.net [4.71.220.89]
7 33 ms 33 ms 33 ms ae-3-80.edge5.Dallas3.Level3.net [4.69.145.145]
8 33 ms 33 ms 33 ms ae13.dal33.ip4.tinet.net [77.67.71.221]
9 76 ms 76 ms 157 ms xe-1-0-0.mtl10.ip4.tinet.net [89.149.185.41]
10 72 ms 72 ms 72 ms te2-2.cr2.mtl3.gtcomm.net [67.215.0.160]
11 72 ms 72 ms 72 ms ae2.csr2.mtl3.gtcomm.net [67.215.0.134]
12 72 ms 72 ms 73 ms te3-4.dist1.mtl8.gtcomm.net [67.215.0.83]
13 72 ms 72 ms 72 ms ns1.marveldns.com [173.209.57.82]
增强型IPERF
这是使用我的专用服务器作为服务器、我的工作站作为客户端执行的 iperf 测试:
C:\> iperf ns1.marveldns.com
------------------------------------------------------------
Client connecting to ns1.marveldns.com, TCP port 5001
TCP window size: 64.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.7.2 port 60339 connected with 173.209.57.82 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.3 sec 5.62 MBytes 4.59 Mbits/sec
现在,这是一个多流模式 iperf 测试:
C:\> iperf -c ns1.marveldns.com -P 10
------------------------------------------------------------
Client connecting to ns1.marveldns.com, TCP port 5001
TCP window size: 64.0 KByte (default)
------------------------------------------------------------
[ 12] local 192.168.7.2 port 29424 connected with 173.209.57.82 port 5001
[ 11] local 192.168.7.2 port 29423 connected with 173.209.57.82 port 5001
[ 9] local 192.168.7.2 port 29421 connected with 173.209.57.82 port 5001
[ 10] local 192.168.7.2 port 29422 connected with 173.209.57.82 port 5001
[ 8] local 192.168.7.2 port 29420 connected with 173.209.57.82 port 5001
[ 7] local 192.168.7.2 port 29419 connected with 173.209.57.82 port 5001
[ 4] local 192.168.7.2 port 29416 connected with 173.209.57.82 port 5001
[ 6] local 192.168.7.2 port 29418 connected with 173.209.57.82 port 5001
[ 5] local 192.168.7.2 port 29417 connected with 173.209.57.82 port 5001
[ 3] local 192.168.7.2 port 29415 connected with 173.209.57.82 port 5001
[ ID] Interval Transfer Bandwidth
[ 11] 0.0-10.9 sec 1.25 MBytes 959 Kbits/sec
[ 4] 0.0-11.0 sec 1.25 MBytes 956 Kbits/sec
[ 3] 0.0-11.4 sec 768 KBytes 551 Kbits/sec
[ 8] 0.0-11.5 sec 1.00 MBytes 730 Kbits/sec
[ 6] 0.0-11.6 sec 1.12 MBytes 813 Kbits/sec
[ 12] 0.0-11.7 sec 1.12 MBytes 805 Kbits/sec
[ 5] 0.0-11.8 sec 1.25 MBytes 886 Kbits/sec
[ 10] 0.0-11.9 sec 1.12 MBytes 794 Kbits/sec
[ 7] 0.0-12.0 sec 1.12 MBytes 788 Kbits/sec
[ 9] 0.0-12.0 sec 1.12 MBytes 784 Kbits/sec
[SUM] 0.0-12.0 sec 11.1 MBytes 7.75 Mbits/sec
路径规划
这是从我的工作站到我的专用服务器执行的 pathping 命令的输出:
Tracing route to ns1.marveldns.com [173.209.57.82]
over a maximum of 30 hops:
0 ws1 [192.168.7.2]
1 192.168.7.254
2 10.69.32.1
3 * 10.5.50.174
4 10.5.50.173
5 fixed-203-69-2.iusacell.net [189.203.69.2]
6 8-1-33.ear1.Dallas1.Level3.net [4.71.220.89]
7 ae-3-80.edge5.Dallas3.Level3.net [4.69.145.145]
8 ae13.dal33.ip4.tinet.net [77.67.71.221]
9 xe-1-0-0.mtl10.ip4.tinet.net [89.149.185.41]
10 te2-2.cr2.mtl3.gtcomm.net [67.215.0.160]
11 ae2.csr2.mtl3.gtcomm.net [67.215.0.134]
12 te3-4.dist1.mtl8.gtcomm.net [67.215.0.83]
13 ns1.marveldns.com [173.209.57.82]
Computing statistics for 325 seconds...
Source to Here This Node/Link
Hop RTT Lost/Sent = Pct Lost/Sent = Pct Address
0 ws1 [192.168.7.2]
0/ 100 = 0% |
1 0ms 0/ 100 = 0% 0/ 100 = 0% 192.168.7.254
0/ 100 = 0% |
2 1ms 0/ 100 = 0% 0/ 100 = 0% 10.69.32.1
0/ 100 = 0% |
3 3ms 0/ 100 = 0% 0/ 100 = 0% 10.5.50.174
0/ 100 = 0% |
4 2ms 0/ 100 = 0% 0/ 100 = 0% 10.5.50.173
0/ 100 = 0% |
5 4ms 20/ 100 = 20% 20/ 100 = 20% fixed-203-69-2.iusacell.net [189.203.69.2]
0/ 100 = 0% |
6 34ms 0/ 100 = 0% 0/ 100 = 0% 8-1-33.ear1.Dallas1.Level3.net [4.71.220.89]
0/ 100 = 0% |
7 34ms 0/ 100 = 0% 0/ 100 = 0% ae-3-80.edge5.Dallas3.Level3.net [4.69.145.145]
0/ 100 = 0% |
8 33ms 0/ 100 = 0% 0/ 100 = 0% ae13.dal33.ip4.tinet.net [77.67.71.221]
0/ 100 = 0% |
9 79ms 0/ 100 = 0% 0/ 100 = 0% xe-1-0-0.mtl10.ip4.tinet.net [89.149.185.41]
2/ 100 = 2% |
10 73ms 14/ 100 = 14% 12/ 100 = 12% te2-2.cr2.mtl3.gtcomm.net [67.215.0.160]
0/ 100 = 0% |
11 72ms 2/ 100 = 2% 0/ 100 = 0% ae2.csr2.mtl3.gtcomm.net [67.215.0.134]
2/ 100 = 2% |
12 72ms 18/ 100 = 18% 14/ 100 = 14% te3-4.dist1.mtl8.gtcomm.net [67.215.0.83]
0/ 100 = 0% |
13 72ms 4/ 100 = 4% 0/ 100 = 0% ns1.marveldns.com [173.209.57.82]
Trace complete.
您可以亲自尝试的事情
如果您想尝试一下,以下是我在服务器中为测试目的设置的一些内容:
HTTP 服务器上的大文件
我在服务器上放置了一个 5 GB 的文件,可以通过 HTTP 下载。你可以在这里找到它:http://www.marveldns.com/transfer_test/
Speedtest MINI 应用程序
我在我的服务器上设置了一个“speedtest mini”测试。您可以访问它并查看它显示您在我服务器和您自己之间的下载和上传速度。您可以在此处找到它:http://www.marveldns.com/speedtest/
iperf 测试
我正在离开一个服务器实例防火墙正在运行。您可以在主机上尝试使用客户端模式的 iperfns1.marveldns.com。
最后:
正如我之前所说,我正在尝试寻求帮助来理解整个事情。我不是 TCP/IP 或高端网络方面的专家。老实说,我甚至不清楚如何使用 tracert、iperf 或 pingpath 的结果来解决问题,但我将它们包括在内,因为每次我谈论这个问题时,总会被问到这个问题。
如果我的问题缺乏改进,请不要只是投反对票,请告诉我问题出在哪里或者我还可以添加什么来获得帮助。谢谢。
答案1
正在下载你的大文件(仅 1mbit/s),我的上行速度为 30mbit/s
并从您的服务器进行速度测试:
您可以尝试在多流模式下运行 iperf 吗?
[on the client side] iperf -c ip_of_your_server -P 10
答案2
我觉得这像是 BufferBloat 问题,因为连接到不同的提供商时会出现同样的问题。你可以查看http://en.wikipedia.org/wiki/Bufferbloat有关此问题的更多详细信息。
考虑到你的起始工作站所在的网络,我猜你是在家里或小型办公室工作。对于我的家庭办公室,将缓冲区的大小从默认大小减少到更小的大小。我在我的家庭网络上运行 dd-wrt,并且http://www.embracingchaos.com/2011/01/fighting-buffer-bloat-on-dd-wrt.html对我来说效果很好。
这不会对网络的总传输速率产生任何影响。缓冲区用于重新发送来自缓存设备的数据包。但是,您的端点站也有缓冲区,并且更有能力确定要使用的传输速率。如果在中间设备上进行缓存,端点可能会对整个网络连接产生错误的印象。