与 socket.io 相关的可扩展性问题

Posted

技术标签:

【中文标题】与 socket.io 相关的可扩展性问题【英文标题】:scalability issues relating to socket.io 【发布时间】:2012-03-29 11:55:14 【问题描述】:

在 socket.io 的主页上,它没有说明任何与可扩展性问题相关的内容。有谁知道它一次可以处理多少个并发连接?我想在我的项目中部署 socket.io 以进行大规模彗星处理。例如,它指出 nodejs 可以轻松处理多达 100K 的并发连接。 socket.io 是否能够一次处理尽可能多的请求?

【问题讨论】:

【参考方案1】:

有许多变量会影响性能并定义 socket.io 的限制。

可能最重要的是您的硬件,尤其是 RAM。普通并发和消息处理之间也有区别。消息处理似乎比并发更消耗 CPU。

我推荐this article,作者是 Mikito Takada。摘录:

节点 (0.4.12) 在单核上使用 tcp ~ 8000 个连接

socket.io 0.6.17 使用 websockets ~ 2300 个单核连接

socket.io 0.7.11 使用 websockets ~ 1800 个单核连接

socket.io 0.8.6 使用 websockets ~ 1900 个单核连接

所以,为了回答你的问题,我想说的是,你不能指望 socket.io 能够处理与 node.js 在相同设置下所能处理的并发级别。

有关 socket.io 性能的更多信息,请阅读 Drew Harry 的 this。

【讨论】:

以上是关于与 socket.io 相关的可扩展性问题的主要内容,如果未能解决你的问题,请参考以下文章

Socket.IO 与 Twisted [关闭]

Socket.io 命名空间限制以及如何扩展它

使用 Redis 扩展 Socket.IO,然后扩展 Redis 本身

使用 redis 水平扩展 socket.io

socket.io 的可扩展架构

如何在 restify 上扩展 socket.io?