我正在开发聊天应用程序。底层服务器使用Node.js,客户端/服务器通过WebSockets通信。
所以问题是:这样的服务器可以处理多少并发连接(没有明显的延迟)?当然,假设服务器是非常强大的机器。我知道这不是一个容易回答的问题,但我只是想要一些想法,一些近似……或者至少是上界和下界。当然,我要做一些实际的测试,但理论可能会对我有所帮助。我还有另一个问题与第一个有关:是否有可能将Node.js应用程序拆分为多台机器?请记住,大多数数据保存在机器内存中,而不是数据库中。
等待回复。:)
您需要确保在epoll/kqueue之上运行node.js,并为高TCP连接数调整您的操作系统
下面是基于Autobahn WebSockets的发布/订阅系统的几个测量值:
- 180k并发,活动WebSocket连接
- 12k/s发送的pubsub消息
- 4k/s WebSocket打开握手
- <每个WebSocket连接8kB>每个WebSocket连接8kB>
这是在一个配置了2核和2GB RAM的FreeBSD i386虚拟机上。
Autobahn WebSockets基于Python/Twisted并运行在kqueue反应器上。
我为一个多房间聊天应用程序做了一个简单的基准测试。只要记住在运行时监视CPU百分比,基准测试应用程序可能会比服务器更快地耗尽CPU !