我们在消费者和生产者服务器之间有一个局域网。生产者的产出路径已经在消费者中得到了提升。生产者和消费者之间有一个10千兆的开关,每个服务器(消费者或生产者)之间的链接是1G。每个使用者使用两个线程从随机服务器读取数据。
问题是消费者和生产者之间的最大转移速度是多少?现在我们的平均速度是3MB/S,这是最高速度吗?甚至是正常吗?
如果网络设计中存在缺陷,它是什么,我们如何才能使它更好?
发布于 2017-09-19 11:07:34
应用程序级别上的最大吞吐量稍微取决于所使用的传输协议-- UDP增加8字节报头开销,TCP增加20字节。IPv4数据包使用20字节,以太网帧使用18字节。在以太网线路上,额外的开销为20字节。
最大大小的以太网帧可以传输1500字节,包括IP和TCP开销。这也是IP数据包(MTU)的最大大小。加上帧和物理层的开销,1538字节正在线路上运行。
总之,您将得到1460字节的用户数据(TCP),其总大小为1538字节。以千兆比特的速度,这是81.274帧/S,与UDP (1472字节用户数据)的TCP总吞吐量为118.6 MB/s或119.6 MB/a。
虽然这些是你实际能达到的最大速度,但是一个设计良好的基础设施,加上适当的应用程序支持,实际上可以达到它们。
对于您的问题:不,3MB/S作为最大吞吐量对于千兆位网络来说是不正常的。根据上面的计算,您应该可以轻松地运行30倍。
您应该尝试诊断这个问题:
发布于 2017-09-19 10:38:24
1Gbs是每秒一吉比特,而3MB/s是每秒3兆字节。(字节用大写B表示,而位用小写b表示)
因为1字节=8位,所以在1000 of /S链接上可以达到24 of/S的速度。这太可怜了。
当应用程序在两台机器之间传输数据时,这些数据被分块成小块,每个块接收到可靠地将块传输到预定目的地所需的附加信息。(想一想你放一封信的信封,所以实际的邮件比这封信重)。
由于这种开销,从应用程序的角度来看,1Gbs链路上的实际带宽更接近800 / 850 Mbs。
24 get比你应该得到的要慢得多。
罪魁祸首很可能是在消费者或生产者的机器上。您应该检查CPU的使用情况,磁盘子系统的I/O率等。
但是,您也可以检查开关上的日志和接口计数器是否存在任何异常行为。
要检查服务器或网络是否出错,您可以尝试在这两台机器上运行类似iperf的工具(一台作为服务器,另一台作为客户端)。
发布于 2017-10-09 14:12:16
在得知以太网“Mbit/秒”的速度为1,000,000位之前,我在网络中工作了很长时间;而很明显,我们通常认为2^20的字节数是多少。多年来,我的计算都以5%的速度被淘汰了!
另外:数据字节与TCP报头的比率差别很大;以前的回答没有提到分段大小和分段数据包。当然,我不反对总的结论。
我从网络嗅探器开始查看数据包之间的延迟:服务器是否迅速响应?您的数据包是否装满了1字节段/数据报?
虽然以前的回答说B是字节,b是位,但是很多人并不是那么细致,很多人都很困惑:我个人总是写位/秒和字节/秒来明确。
告诉我们你进展如何。
乔纳森。
https://networkengineering.stackexchange.com/questions/44261
复制相似问题