我已经设置了这NodeJs TCP 服务器,并使用消息泛洪器对其进行了测试。只是为了看看服务器的性能如何。
如果我在同一台计算机(ubuntu)上运行服务器和消息泛洪程序,则消息吞吐量会很高,但如果我在计算机 1(ubuntu1)上启动服务器并在计算机 2(也是 ubuntu)上启动消息泛洪程序,则吞吐量会急剧下降。两台 PC 都在同一个网络上。事实上,它们直接相互连接。
我开始在互联网上寻找原因,我想我需要在两台 Ubuntu PC 上调整 TCP,但到目前为止我还没有成功。
有人遇到过这样的问题吗,或者有人能帮助我吗?
谢谢
以下是洪水代码:
var net=require('net')
var client = net.createConnection(5000, "10.0.0.2")
client.addListener("connect", function(){
for(var i = 0; i < 1000; i++) {
client.write("message ");
}
})
答案1
当两个程序在同一台计算机上运行时,泛洪效果很好,这是因为您不必通过以太网发送任何数据。这一切都是通过本地主机在环回接口上完成的。
我认为在这种情况下最拖慢您的速度的因素是两台计算机上以太网接口的性能开销。通过以太网发送数据确实需要资源。在一台小型 64 位 1.3 gHz 计算机上,我的 CPU 很容易就达到最大限度,因为网络速度只有 100mbits/s,而不是 1 gbits/s(尽管以太网可以达到 1 gbits/s,但它永远无法接近这个速度)。
当然,很大程度上还取决于以太网硬件和 Linux 驱动程序的质量。
您是否考虑过使用绑定将 2 个以太网接口绑定在一起?根据绑定模式,您可以对 2 个接口之间的流量进行负载平衡。这应该有助于提高性能。