Node.js系统要求50.000并发连接

时间:2014-02-14 14:33:28

标签: mysql node.js memcached couchbase mysql-cluster

情况是大约有50,000个电子设备将每分钟连接到node.js中创建的Web服务一次。每个人都将发送包含一些JSON数据的POST请求。 所有这些数据都应该得到保障。 Web服务将接收这些请求,将数据保存到数据库。 读取请求也可以从数据库中获取一些数据。

我认为要建立一个基于以下基础设施的系统:

Node.js + memcached +(mysql cluster OR Couchbase)

那么,我需要将哪些内存要求分配给我的Web服务器以便能够处理所有这些连接?假设在悲观的可能性中,我会有50.000个并发请求。

如果我使用SSL来保护连接怎么办?我是否为每个连接添加了太多开销? 我应该扩展系统来处理它们吗?

你有什么建议我?

非常感谢提前!

2 个答案:

答案 0 :(得分:2)

当然,不可能提供任何有价值的计算,因为它总是非常具体。我建议您从一开始就开发可扩展和可扩展的系统架构。
并使用JMeter https://jmeter.apache.org/进行负载测试。然后,您将能够从1000s扩展到无限连接 这是一篇1 000 000条连接文章http://www.slideshare.net/sh1mmer/a-million-connections-and-beyond-nodejs-at-scale

答案 1 :(得分:-3)

请记住,您的nodejs应用程序将是单线程的。这意味着当您增加并发请求的数量时,您的性能会严重降低。

为提高性能,您可以做的是为您的计算机上的每个核心创建一个节点进程,所有这些核心都位于代理(例如nginx)后面,您还可以为您的应用程序使用多台计算机。

如果您只向memcache发出请求,那么您的api不会降级。但是一旦你开始查询mysql,它就会开始限制你的其他请求。

编辑: 正如评论中所建议的那样,您还可以使用集群来分叉工作进程,让它们相互竞争传入请求。 (工作人员将在单独的线程上运行,从而允许您使用所有核心)。 Node.js on multi-core machines