调试服务器的慢速传输速率


9

我试图解释这一点很简单,但要尽可能记录在案。这不是该服务器或当前ISP独有的。多年来,在使用不同的ISP以及服务器使用不同的提供商(美国的GoDaddy,加拿大的iWeb和GloboTech)的过程中,我一直看到相同的问题。唯一常见的是Windows Server OS(2003和2008 r2)。但是,现在让我们看看当前的服务器和当前的ISP。

问题

我的本地工作站和远程专用服务器之间的传输速率非常慢。我的服务器在100 Mbps端口上,本地工作站在50 Mbps通过光纤的对称连接上。

症状

当在speedtest.net上针对美国和墨西哥的不同服务器和位置进行测试时,服务器和工作站均获得出色的结果(非常接近其连接速度)。如果我从Dropbox(例如Dropbox)将大文件下载到服务器或工作站,则一次连接的传输速率分别为10 MBps和5 MBps,根据100 Mbps和50 Mbps的每种连接速度,这是正确的分别。

但是,如果我将文件从服务器(通过HTTP或FTP)传输到我的工作站,我什至无法达到应达到的50 Mbps速度(5 MBps传输速率),但是却获得了相当于3 Mbps的速度(300 KBps传输速率)。

我试图理解为什么我得到这么慢的传输速率。我不确定如何调试它。每当我向托管服务提供商提出问题单时,他们都会要求我提供tracert输出,最后将其归咎于中间的某个服务器。但这似乎是不正确的,如果我们首先考虑我说的话:在将服务器与GoDaddy,iWeb和GloboTech结合使用时,以及作为不同的ISP时,我已经看到了这种确切的速度/问题。不同类型的Internet服务。它看起来确实像服务器区域中某个固定的设置。

我做过的测试

速查

这些是来自speedtest.net的速度测试,这些测试是在我的专用服务器中针对不同的远程服务器执行的,这些远程服务器包括我在墨西哥城的ISP数据中心的服务器

加拿大:下载速度为94.64 Mbps,上传速度为94.87 http://www.speedtest.net/my-result/3470801975

加利福尼亚州圣何塞:下载93.58 Mbps,上传95.48 Mbps http://www.speedtest.net/my-result/3470805341

墨西哥城(位于我自己的ISP的datacanter中的服务器):下载速度为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测试:

------------------------------------------------------------
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

拍打

这是从工作站执行到我的专用服务器的路径推荐的输出:

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/

最后

正如我之前所说,我正在努力寻求帮助,以帮助您了解整个过程。我不是TCP / IP或高端网络专家。老实说,我什至不知道如何使用tracert,iperf或pingpath的结果来解决问题,但是我将它们包括在内是因为在谈论此问题时总是会要求它。

如果我的问题缺少更好的解决方法,请不要投票否决,让我知道它有什么问题,或者我可以添加其他内容以获得帮助。谢谢。


只是因为我很好奇,当在专用服务器上的localhost上获取文件时,您的速度是多少?
布里斯

嗨,布莱斯。我得到的速度约为50 MB / s(字节,而不是位),与我直接在Windows资源管理器中手动将文件复制到同一磁盘中的同一文件夹时得到的速度几乎相同(因此受到速度的限制)。磁盘读取和写入自身)。
弗朗西斯科·扎拉波佐

1
根据tracert,您的工作站位于相当大的网络上。您是否尝试过询问本地网络管理员,是否存在某种会降低连接速度的Qos?

如果您同时启动多个传输,则合并的速度加起来是否接近预期的50Mbit / s?即。是整体速度变慢,还是每个连接速度变慢?
格兰特(Grant)

@Grant:通过多个连接,它的广告速率高达50 Mbps。每个连接都会出现限制。
弗朗西斯科·扎拉波佐

Answers:


9

我访问该URL时遇到的瓶颈显然是由于窗口大小所致。

当我尝试从您的服务器下载时,速度为555KB / s。我的往返时间为108毫秒。通过数学运算,我得到以下窗口大小:555KB / s * 108ms = 59.94KB。

只要我从数据中心的主机上执行此操作,就可以获得非常一致的吞吐量和往返。另外,如果我同时开始两个下载,则每个下载速度为555KB / s。当瓶颈是窗口大小时,这正是您将看到的症状。

没有窗口缩放,窗口不能大于64KB。但是我确实可以协商窗口缩放,因此应该有可能实现更高的吞吐量。剩下两个假设要研究:

  • 正在某种程度上破坏了从客户端到服务器的路径上的窗口缩放选项,使服务器认为窗口缩放了1倍。
  • 可以将服务器配置为在每个连接上永远不要使用超过60KB的发送窗口。

首先很容易验证您是否可以在服务器上执行数据包捕获。只需查看传入SYN数据包上的缩放比例选项,即可确定服务器是否收到了大于1的缩放比例。我可以建议使用Wireshark分析流量。

验证第二个假设需要您正在使用的操作系统的一些知识。您碰巧选择了一个我不知道的操作系统,所以我无能为力。因此,我只能提供网络方面的专业帮助。


我不确定100%,但是窗口大小不受套接字发送和接收缓冲区大小(套接字选项SO_RVSBUF和SO_SNDBUF)影响吗?我曾看到类似的事件,其中缓冲区太小(例如1KB),与4KB或8KB相比,吞吐量受到很大限制)。
卡梅隆·克尔

@CameronKerr您的评论促使我重新审视了这段交流。这次我从笔记本电脑(通过WiFi进行测试,吞吐量较低)上进行了测试。我观察到的是,在105毫秒的往返时间内,我的速度为138KB / s。这意味着有效窗口大小为14.5KB。在吞吐量稳定之前,我的笔记本电脑宣传的接收窗口增长到679 << 7(约85KB)。那应该排除缩放因子在传输过程中简单地为零的可能性,并且应该排除吞吐量受我端的接收缓冲区限制的可能性。
卡巴斯德(Kasperd)

对于Windows Server 2008 R2的相关文章可以在这里找到:andydavies.me/blog/2011/11/21/...
旧金山Zarabozo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.