我有两台服务器,都配有千兆网卡,在相互通信时遇到了严重的延迟问题。最终发现,罪魁祸首是其中一台服务器接入了 100mb 交换机端口。
对服务器执行 ping 操作始终返回 <1ms
是否有一个工具可以显示服务器之间的实际延迟/传输速率与最大可能值的比较?
答案1
执行状态监控,收集数据,可视化。
- 您的操作系统有工具来报告网络接口的当前状态。使用它们并将其与预期状态进行比较。自动执行此操作。
- 使用 snmp 或本机计数器收集样本。对于快速接口,请使用 64 位计数器,或者使用非常小的采样间隔。
- 收集统计数据时,将其绘制成图表。石墨现在很流行。
然后,通过监控意识到绝不实时。你总是在看过去。
观看 Jason Dixon 在罗马 devopsdays 上的表演:开源监控现状:好的、坏的、糟糕的,以及对未来的一瞥。
答案2
您可以使用类似 iperf 的工具测试两台服务器之间的实际延迟、抖动和传输速度。不过,这只是一个测试工具。
在你的具体情况下,从操作系统上可以很明显地看出关联各种接口的速度。
答案3
测试延迟并不难。你可以用任何两台通过网络连接的服务器来测试延迟。
在一定时间内(例如 10 秒)在服务器之间执行一系列“乒乓”通信。将服务器之间完成的“乒乓”通信除以时间。现在您就得到了每秒的交易量。
让我们来看一下这些数字。
测试时长:10秒 交易完成5000笔
因此,您每秒执行 1,000 笔交易。如果您的乒乓交易为 128 字节,则您每秒执行 128,000 字节。这相当于每秒 1,024,000 比特。将该数字反转(1/1,024,000),您可以说您的交易延迟为 0.000000978。即每次往返 978 纳秒。
978 纳秒是每比特的秒数。这就是将一个比特从一台机器发送到另一台机器并返回所花的时间。这就是延迟的定义。
执行此测试的一个好工具是 netperf (http://www.netperf.org/netperf/)。它将在一段设定的时间内运行乒乓测试,并为您提供我上面列出的统计数据。
在一台服务器上,运行“netserver”
在另一台服务器上,运行 netperf -t UDP_RR -H -l 10 -- -r 32
您将获得我上面列出的所有信息。您可以使用这些结果进行计算。
非常感谢 Solarflare 的 Onload 用户指南。他们非常详细地概述了这种测试方法。