我们在windows server 2012上部署了一个简单的express节点服务器,它只接收3个参数的GET请求。它对这些参数做了一些小的处理,有一个非常简单的内存节点缓存用于缓存这些参数组合中的一些,与外部许可证服务器的接口为请求用户提取许可证并将其设置在cookie中,随后是,它通过负载平衡器(使用zmq运行)与一些工作人员进行交互,以下载一些大文件(分块,解压并提取它们,将它们写入某些目录)并将其显示给用户。在部署这些文件时,还会启动对工作人员的其他调用。简单消息传递Nodejs服务器一次只接受4个请求
节点服务器不会与任何数据库或磁盘进行通信。它只是等待运行在其他机器上的负载平衡器的响应(这些是长时间的操作,通常需要2-3分钟才能发送响应)。因此,本质上,计算和数据库交互发生在其他机器上。节点服务器只是一个简单的消息传递/握手服务器,它等待事件处理程序中的响应,启动其他请求并呈现响应。
我们目前没有使用'cluster'模块或nginx。使用裸机节点服务器,是否可以同时接受和处理至少16个请求?诸如这些http://adrianmejia.com/blog/2016/03/23/how-to-scale-a-nodejs-app-based-on-number-of-users/的页面提到一个简单的节点服务器一次只能处理2-9个请求。但是,即使我们的裸骨执行,一次也不会超过4个请求。
即使对于这种情况,是使用群集模块还是nginx?如何为几百个用户扩展此应用程序?
如果一次只接受4个以上的请求,听起来好像您的应用程序正在运行某种强加的限制(如连接池没有连接并等待连接释放)。你的故事中有太多的移动部分来查明罪魁祸首,但是首先删除你的请求处理程序的一部分,以查看哪一个可能会导致该块(另外,链接到的博客文章并没有说明单个节点服务器一次只能处理2-9个请求)。 – robertklep