增加linux

时间:2016-08-29 09:44:50

标签: linux linux-kernel network-programming

我正在测试提供存储在内存中的媒体文件的NodeJS应用。媒体文件大小各约为2MB-5MB。我试图找出最大化可用以太网通道(1 Gbps或10 Gbps)的最佳方法。

我使用Ubuntu 16.04.1 LTS在VM(VirtualBox)中进行测试。为了测试我使用我自己的NodeJS脚本,它只是向服务器发出多个传出请求,然后记录到控制台的平均比特率。测试NodeJS脚本只运行1分钟,并且有一个可配置参数N,表示它可以同时下载多少次。

我注意到,如果我增加同时下载的数量,那么平均吞吐量会大幅下降。例如:

  • 如果我用N = 30(同时下载30个)来测试我的测试,那么我总体上得到125 MB / s,在这种情况下,每个请求都以3-5 MB / s的速度提供
  • 现在,如果我用N = 300运行它,那么我的整体比特率为90 MB / s或低30%
  • 如果我以N = 600运行,那么我的总比特率为80 MB / s。

任何想法为什么它似乎不能很好地扩展同时下载的数量?更多的并发连接几乎没有任何CPU影响,如果我尝试对nginx运行相同的测试脚本从SSD提供相同的文件,那么我得到相同的数字。使用NodeJS服务器的Ubuntu上的CPU负载不高于20%。如果我在Ubuntu上本地运行我的基准测试,那么我可以获得1800 MB / s的吞吐量。

据我所知,基准测试虚拟以太网卡是无用的,但我可以通过30个同时连接来最大化下载速率,但如果我使用300个同时连接,整体吞吐量下降了30%,而我期望它不应该下降超过5%。

通过多次同步下载可以做些什么来提高整体比特率?

P.S。还有另一篇有趣的帖子about maximum number of TCP/IP connections

0 个答案:

没有答案