【发布时间】:2018-02-17 03:24:22
【问题描述】:
我正在运行一个 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-client:https://github.com/MickL/socket-io-benchmark-kit
【问题讨论】: