我想测量网络性能,尤其是延迟。我们正在对通过网络发送实时音频/视频数据的系统进行压力测试。当有多个同时连接(例如 100 个连接)时,我们观察到数据从一方发送到第二方需要很长时间。目前,我不知道这是由于服务器性能还是网络问题。
服务器负载确实很低(大约 15% 的 CPU 负载),但是由于线程上下文切换,数据可能等待服务器开始处理,因此仍然可能是服务器问题。我的设置如下:
客户端 -> 负载均衡器 -> 代理服务器 -> 应用服务器 -> 代理
我想测量每两个元素之间发送数据需要多长时间(仅省略负载均衡器),例如在客户端和代理服务器之间。
服务器是Windows Server 2008R2,客户端和代理是Windows XP/7。
我以为可以在每台机器上安装 wireshark,同步时钟,然后手动检查每台机器上捕获的数据包。但是,我希望有更好的解决方案。
答案1
Russinovich 的 Psping 可以执行 ICMP ping、TCP ping、带宽测试等。
http://technet.microsoft.com/en-us/sysinternals/jj729731.aspx
它有一个服务器组件和一个客户端组件,因此您必须在两台机器上运行它才能进行更高级的测试。
答案2
Wireshark 可用于抽查出现症状的一两个站点。它具有出色的往返时间 (RTT) 图表功能。如果您确实丢失了数据包,那么您将需要更多,您需要执行相关捕获 - 两边各一个,并确定数据包可能已发送但未接收的位置,或者其他类似重新传输的情况。您还需要确定是否发生了大量重新传输。
如果您发送大量小型 TCP 数据包,则可能会遇到 200 毫秒的默认延迟确认。如果症状可重现,则它可能会在数据包捕获中显示为数据包与相应 ACK 之间的 200 毫秒间隙。
答案3
如果您只是测试网络,Wireshark 似乎有点过头了。 ping
最简单的方法是在测试期间运行一定数量的 ping,然后分析结果,或者更进一步编写一个小程序,按计划运行测试,然后将数据保存到 CSV 文件中。您可以在网络上任何两个要测试延迟的节点之间运行此程序。
如果您正在寻找程序的总延迟,那么您将需要一些不同的东西。
我不会相信 wireshark 和同步时钟来测试这一点,因为您将寻找可能无法在同一网络上的两个不同主机之间准确显示的毫秒差异。