如何解决客户端和服务器之间过长的延迟问题?

如何解决客户端和服务器之间过长的延迟问题?

在大型私有网络上,我控制的两个盒子之间似乎存在过多的延迟。这导致服务器无法向客户端提供 Web 服务,因为会导致超时。

以下是 Charles 中记录的一个运行缓慢的请求

Timing  
Request Start Time  03/11/10 23:21:33
Request End Time    03/11/10 23:21:33
Response Start Time 03/11/10 23:21:42
Response End Time   03/11/10 23:21:42
Duration    8.99 sec
Request Duration    16 ms
Response Duration   0 ms
Latency 8.97 sec
Speed   1.30 KB/s
Response Speed  ∞ KB/s
Size    
Request Header Size 412 bytes
Response Header Size    151 bytes
Request Size    -
Response Size   11.17 KB (11436 bytes)
Total Size  11.72 KB (11999 bytes)
Request Compression -
Response Compression    - 

作为测试,我刚刚尝试通过浏览器获取一个 423k 的图像文件,但下载速度太慢,以至于停滞了。

我该如何排查问题出在哪里?

我尝试使用 pingplotter 替代文本

看起来跳 3 和 4 是罪魁祸首?我接下来该怎么办?

回答

事实证明,这是运行 Windows Web Server 2008 R2 的客户端的问题,如果路由器无法处理网络 TCP 窗口缩放,则会出现已知的网络速度问题。更新路由器软件后,问题得到解决。

答案1

尝试从尽可能多的不同点复制问题。您可能会发现它们之间存在一些共同点(无论是它们使用的服务器、交换机等)。从每个端点收集跟踪路由数据。

使用洋葱方法总是更好:添加/删除层。您可以从客户端开始,然后越来越接近服务器。或者反过来。

确保检查接口统计信息中的错误计数。我发现在两端启动 tcpdump/Wireshark 并捕获来自 TCP 会话的数据包,然后比较两者非常有用。Wireshark 可以很好地指出最明显的问题(如校验和错误或重新传输)。

答案2

事实证明,这是运行 Windows Web Server 2008 R2 的客户端的问题,如果路由器无法处理网络 TCP 窗口缩放,则会出现已知的网络速度问题。更新路由器软件后,问题得到解决。

http://www.intel.com/support/motherboards/server/sb/CS-030717.htm

答案3

查看您的 pingplotter 结果,似乎显示的主要问题是路径中的某些设备对 ICMP 回显请求的响应较慢(如果#10 是您的终端设备,则平均 RTT 为 42 毫秒,但中间的设备平均 RTT 为 82 毫秒,这可能是由于设备负载所致,但很难判断)。

服务器在提供内容之前是否需要名称解析?从“发出请求”到“确认请求”似乎有 9 秒的时间,唯一真正符合这种情况的情况是服务器尝试进行查找(某种类型)但未立即获得响应。

答案4

安装 mtr 并在客户端和服务器之间以及 vesa 之间运行它。您将能够看到数据包丢失和每跳延迟。非常有用的工具。请注意,如果您的网络正在调整流量,则结果将不可靠。

替代文本

相关内容