Simple Node.js应用程序的突然扩展

Simple Node.js应用程序的突然扩展,node.js,scalability,Node.js,Scalability,我的网站是用Node.js编写的,没有数据库或外部依赖关系,但有很多大型媒体文件(图像和一些视频),总计约2gb。网站的结构是从几个简单的JSON文件中提取出来的 我的问题是急剧和突然的缩放。我的站点的流量通常很容易被任何小型VPS实例处理,但偶尔流量会在短时间内达到正常水平的数百倍。我的问题是如何快速、无停机、自动地扩展。我知道自动缩放存在一些问题,但缺少数据库可能会抵消其中一些问题 我应该考虑什么样的扩展问题和选项 (就上下文而言,我目前使用的是Digital Ocean VPS,但我找不到

我的网站是用Node.js编写的,没有数据库或外部依赖关系,但有很多大型媒体文件(图像和一些视频),总计约2gb。网站的结构是从几个简单的JSON文件中提取出来的

我的问题是急剧和突然的缩放。我的站点的流量通常很容易被任何小型VPS实例处理,但偶尔流量会在短时间内达到正常水平的数百倍。我的问题是如何快速、无停机、自动地扩展。我知道自动缩放存在一些问题,但缺少数据库可能会抵消其中一些问题

我应该考虑什么样的扩展问题和选项


(就上下文而言,我目前使用的是Digital Ocean VPS,但我找不到一种干净的方式来扩展它而不停机。我不是与我的提供商联姻。)

可扩展性很重要,但在需要时进行扩展也很重要。我们都没有Facebook或Twitter的扩展需求:)这可能只是资源管理的一个例子

测试问题

在没有数据库和使用NodeJ的情况下,node的一些优势在于其并发连接的数量。对于简单的io加载,您似乎选择了一个不错的框架。而且,由于您的问题集是一个被轰炸的特定资源,所以在您的服务器上运行一些负载测试。流行的免费工具包括:

还有付费服务,如(小规模免费)、forecastweb、E-Load等

根据这些结果,确定原因

它是被送达的文件的大小吗?是并发请求的数量吗?在减速期间(ram、端口、文件系统、一些其他IO、CPU、带宽等),哪些资源正在被使用或耗尽

看一看,它为服务器负载定义了一些概念。要实施解决方案,您需要确定减速的原因。是不是:1)有些队列排满了?2) TCP连接和端口有问题吗?3) 资源分配太慢?这将有助于形成您的解决方案

扩展计划。

您的项目所需的缩放类型可能只是另一个项目所需的部分。如果您知道这种情况的根本原因,它将增加您的选择

是带宽问题吗?也许将web服务器用作多个文件服务云实例的路由器可以有效地增加用户看到的带宽。即使只是将文件存储在一个更大的云上,也可以保证您可能需要的带宽

CPU、RAM等是否有问题?您可能需要同一web应用的多个实例(或增加VFS的分配)。这是亚马逊弹性云计算(EC2)和其他类似模型的“弹性”部分。创建一个“黄金图像”,当你看到流量开始飙升时,使用内置的监控工具进行复制,在高峰结束时将其关闭。可编程或简单手动

问题是并发请求吗?瓶颈不应该是NodeJS,至少有1000个并发请求。也许只需检查您的实现,以确保单节点线程不会减速。也许或者有些会缓解瓶颈,足以满足您的需求


最后一点:对于提供静态文件,我听说甚至比NodeJS更适合。根据web应用程序的复杂性,您可以相当轻松地切换或基准测试。

可伸缩性很重要,但在需要时进行扩展也很重要。我们都没有Facebook或Twitter的扩展需求:)这可能只是资源管理的一个例子

测试问题

在没有数据库和使用NodeJ的情况下,node的一些优势在于其并发连接的数量。对于简单的io加载,您似乎选择了一个不错的框架。而且,由于您的问题集是一个被轰炸的特定资源,所以在您的服务器上运行一些负载测试。流行的免费工具包括:

还有付费服务,如(小规模免费)、forecastweb、E-Load等

根据这些结果,确定原因

它是被送达的文件的大小吗?是并发请求的数量吗?在减速期间(ram、端口、文件系统、一些其他IO、CPU、带宽等),哪些资源正在被使用或耗尽

看一看,它为服务器负载定义了一些概念。要实施解决方案,您需要确定减速的原因。是不是:1)有些队列排满了?2) TCP连接和端口有问题吗?3) 资源分配太慢?这将有助于形成您的解决方案

扩展计划。

您的项目所需的缩放类型可能只是另一个项目所需的部分。如果您知道这种情况的根本原因,它将增加您的选择

是带宽问题吗?也许将web服务器用作多个文件服务云实例的路由器可以有效地增加用户看到的带宽。即使只是将文件存储在一个更大的云上,也可以保证您可能需要的带宽

CPU、RAM等是否有问题?您可能需要同一web应用的多个实例(或增加VFS的分配)。这是亚马逊弹性云计算(EC2)和其他类似模型的“弹性”部分。创建一个“黄金图像”,当你看到流量开始飙升时,使用内置的监控工具进行复制,在高峰结束时将其关闭。可编程或简单手动

问题是并发请求吗?瓶颈不应该是NodeJS,至少有1000个并发请求。也许只需检查您的实现,以确保单节点线程不会减速。也许吧