情况是大约有50,000个电子设备将每分钟连接到node.js中创建的Web服务一次。每个人都将发送包含一些JSON数据的POST请求。 所有这些数据都应该得到保障。 Web服务将接收这些请求,将数据保存到数据库。 读取请求也可以从数据库中获取一些数据。
我认为要建立一个基于以下基础设施的系统:
Node.js + memcached +(mysql cluster OR Couchbase)
那么,我需要将哪些内存要求分配给我的Web服务器以便能够处理所有这些连接?假设在悲观的可能性中,我会有50.000个并发请求。
如果我使用SSL来保护连接怎么办?我是否为每个连接添加了太多开销? 我应该扩展系统来处理它们吗?
你有什么建议我?
非常感谢提前!
答案 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