估计网络吞吐量是否达到

估计网络吞吐量是否达到

我有 2 个通过 TCP/IP 进行通信的进程,如下所示:进程 A 向进程 B 发送 20 KB 的数据,经过一些计算后,进程 B 将响应(2KB)发送回 A。

当我在同一台计算机上循环运行这两个进程 100 次时(编辑:每次我发送新任务之前都要等待上一次迭代的响应),总执行时间为 15 秒。当我在连接 1 Gbps 网络的不同机器上运行它们时,总执行时间增加到 30 秒。所以我假设通过网络进行通信需要 15 秒。

我想知道对于指定的网络吞吐量和要发送的数据量,这是否是合理的通信时间(15 秒/100 次 = 0.15 秒发送任务并获得响应)。如果可以更快(我倾向于这么认为),我应该查看哪里(防火墙、路由等)?

如果相关的话,使用的操作系统是 Windows 7 Ultimate。

答案1

网络的实际吞吐量不应该成为这里的一个因素,因为您甚至不会接近饱和 1Gbps 链路。

现在,您的应用程序必须穿过 OSI 模型的 1-6 层,然后返回到接收端的应用程序层,沿途的每个步骤都会给连接增加非常少量的延迟。

然而,话虽如此,对于如此少量的数据(20KB 突发,2KB 返回),150 毫秒是相当长的时间,因此除非您的网络拥塞,或者具有严格的 QoS,否则没有理由因为增加网络而导致它花费这么长时间。如果您愿意,您可以自己测试一下 - 发送一个 20KB 大小的 ICMP 数据包,看看需要多长时间才能得到响应。(ping XXXX -l 20480)。

但说实话,这里还有很多其他因素在起作用,同时运行 100 个应用程序实例只会让事情变得更加复杂。运行单个实例实际上需要多长时间?

答案2

这似乎不是网络容量问题(当然,除非有其他东西占用了带宽)。总的来说,100 笔交易的总数据传输量为 2.2MB,这其实不算什么。

  • 检查其他系统的网络使用情况 - 我怀疑这是一个问题。
  • 远程系统处理数据的速度是否与本地系统一样快。

相关内容