我正在运行一个 4 核 Amazon EC2 实例(m3.xlarge),它有 200.000 个并发连接,没有资源问题(每个核心在 10-20%,内存在 2/14GB)。无论如何,如果我向所有首先连接到 cpu-core 的用户发出消息,则会在几毫秒内得到它,但最后一个连接的用户会延迟 1-3 秒,并且每个 CPU 内核会在 1-2 秒内达到 100% . 即使在“仅”50k 并发用户(每个核心 12.5k)时,我也注意到了这个问题。
如何减少延迟?
我尝试将 redis-adapter 更改为 mongo-adapter 没有区别。
我使用此代码在多个 cpu 核心上获得粘性会话:
https://github.com/elad/node-cluster-socket.io
测试非常简单:客户端只是连接,什么都不做。服务器仅侦听消息并向所有人发出。
编辑:我用 50k 客户端测试了没有任何集群/适配器逻辑的单核,结果相同。
我在一个包中发布了服务器、单核服务器、基准和 html 客户端:https ://github.com/MickL/socket-io-benchmark-kit