我有两个进程通过TCP/IP进行通信,如下所示:进程A向进程B发送20 KB的数据,经过计算,进程B将响应(2KB)发送回A。
当我在同一台计算机中在一个循环中运行两个进程100次(编辑:每次在发送新任务之前等待上一次迭代的响应时),总执行时间为15秒。当我在连接1 Gbps网络的不同机器上运行它们时,总执行时间将增加到30秒。因此,我假设通过网络进行通信需要15秒。
我想知道,对于指定的网络吞吐量和要发送的数据量,这是否是一个合理的通信时间(15秒/ 100次= 0.15秒来发送任务和获得响应)。如果它可以更快(我倾向于这样想),我应该在哪里看(防火墙,路由等)?
使用的操作系统是Windows 7终极操作系统,如果它是相关的话。
发布于 2014-01-09 13:28:40
网络的实际吞吐量不应该是这里的一个因素,因为您甚至不会接近饱和一个1 1Gbps的链接。
现在您的应用程序必须通过OSI模型的1-6层向下移动,然后返回到接收端的应用层,在此过程中的每一步都将为连接增加非常小的延迟。
但是,尽管如此- 150毫秒对于如此少量的数据(20 2KB突发并有2kb的返回)来说是相当长的时间,所以除非您的网络拥挤,或者有一些严格的QoS,那么网络的添加就没有理由让它花费那么长的时间。如果您愿意的话,您可以自己测试--发送一个大小为20 an的ICMP数据包,并查看得到响应所需的时间。(ping X.X -l 20480)。
但是老实说,这里还有很多其他因素在起作用,同时运行100个应用程序实例只会使事情变得更加复杂。当您运行一个实例时,实际需要多长时间?
发布于 2014-01-09 13:03:18
认为这是一个网络容量问题是不对的(当然,除非其他东西正在蚕食带宽)。说到并完成所有操作时,100个事务的总数据传输量为2.2MB,这实际上并不算什么。
https://serverfault.com/questions/566089
复制相似问题