我有2个进程通过TCP / IP进行通信,如下所示:进程A向进程B发送20 KB数据,经过一些计算,进程B将响应(2KB)发送回A.
当我在一个循环中同时在同一台计算机上运行100次进程(EDITED:每次在发送新任务之前等待来自上一次迭代的响应)时,总执行时间为15秒。 当我在连接1 Gbpsnetworking的不同机器上运行它们时,总执行时间会增加到30秒。 所以我假设networking通讯需要15秒。
我想知道对于指定的networking吞吐量和发送的数据量,这是一个合理的通信时间(15秒/ 100次= 0.15秒来发送任务并获得响应)。 如果它可以更快(我倾向于认为),我应该在哪里看(防火墙,路由等)?
使用的操作系统是Windows 7旗舰版,如果它是相关的。
networking的实际吞吐量不应该是一个因素,因为你甚至不会接近饱和1Gbps链路。
现在,您的应用程序现在必须在OSI模型的第1-6层下行,然后备份到接收端的应用程序层,这一步中的每一步都会为连接添加一个非常小的延迟时间。
然而,这就是说–150毫秒对于如此less量的数据(带有2KB返回的20KB突发)是相当长的一段时间,所以除非你的networking拥塞或者有一些严格的QoS,否则没有理由增加networking应该导致它需要那么长时间。 如果你愿意的话,你可以自己testing一下 – 发送一个大小为20KB的ICMP数据包,看看得到响应需要多长时间。 (ping XXXX -l 20480)。
但说实话,这里还有其他许多因素,一次运行100个应用程序只会让事情变得更加复杂。 运行单个实例需要多长时间?
这是不正确的,这是一个networking容量问题(除非有其他的东西吃带宽)。 当所有的事情都说完之后,你的100笔交易的总数据传输量是2.2MB,这是真的。