我正在测试提供存储在内存中的媒体文件的NodeJS应用。媒体文件大小各约为2MB-5MB。我试图找出最大化可用以太网通道(1 Gbps或10 Gbps)的最佳方法。
我使用Ubuntu 16.04.1 LTS在VM(VirtualBox)中进行测试。为了测试我使用我自己的NodeJS脚本,它只是向服务器发出多个传出请求,然后记录到控制台的平均比特率。测试NodeJS脚本只运行1分钟,并且有一个可配置参数N,表示它可以同时下载多少次。
我注意到,如果我增加同时下载的数量,那么平均吞吐量会大幅下降。例如:
任何想法为什么它似乎不能很好地扩展同时下载的数量?更多的并发连接几乎没有任何CPU影响,如果我尝试对nginx运行相同的测试脚本从SSD提供相同的文件,那么我得到相同的数字。使用NodeJS服务器的Ubuntu上的CPU负载不高于20%。如果我在Ubuntu上本地运行我的基准测试,那么我可以获得1800 MB / s的吞吐量。
据我所知,基准测试虚拟以太网卡是无用的,但我可以通过30个同时连接来最大化下载速率,但如果我使用300个同时连接,整体吞吐量下降了30%,而我期望它不应该下降超过5%。
通过多次同步下载可以做些什么来提高整体比特率?
P.S。还有另一篇有趣的帖子about maximum number of TCP/IP connections。