在多核机器上的socket.io max连接测试

时间:2014-04-25 09:59:49

标签: node.js websocket socket.io

要回答我自己的问题,这是一个客户端问题,而不是服务器问题。由于某些未知原因,我的mac osx无法完成~7.8k的连接。让ubuntu机器作为客户解决了这个问题。


[问题]

我正在尝试估算服务器可以保留的最大连接数。所以我写了一个简单的socket.io服务器和客户端测试代码。你可以看到它here. : gist

上面的要点非常简单。服务器接受所有传入的套接字请求,并定期打印出已建立的连接数和cpu,内存使用情况。客户端尝试连接到具有特定编号的给定socket.io服务器,除了保持连接之外什么都不做。

当我使用一台服务器(ubuntu机器)和一台客户机(来自我的mac osx)运行此测试时,大约有7800个连接成功完成并且它开始断开连接。接下来,我在不同的cpu内核上运行了更多服务器,并再次运行测试。我所期望的是可以建立更多的连接(总和),因为主要的瓶颈是CPU功率。但我所看到的是我使用了多少核心,这个服务器可以保持的连接总数大约是7800个连接。我很难理解为什么我的服务器会像这样。任何人都可以告诉我这种行为背后的原因或指出我缺少的东西吗?

删除任何连接之前建立的连接数。

  • 1台服务器:7800
  • 3台服务器:2549,2299,2979(每台)
  • 4台服务器:1904,1913,1969,1949(每个)

服务器端命令

  • taskset -c [cpu_num] node --stack-size=99999 server.js -p [port_num]

    客户端命令

  • node client.js -h http://serveraddress:port -b 10 -n 500

b = 10,n = 500表示客户端在尝试另外10个连接之前应该看到已建立10个连接,直到建立10 * 500个连接。

包版本

  • socket.io,socket.io-client:0.9.16
  • express:3.4.8

1 个答案:

答案 0 :(得分:0)

CPU在这些情况下很少成为瓶颈。它更可能是操作系统允许的最大TCP连接数,或RAM限制。