Articles of 缩放

运行数千个NodeJS应用程序

我想开始写许多基于NodeJS的小应用程序,比如streamfilter,发生器等等,每个应用程序可能是30-40LOC。 每个CPU消耗的CPU,RAM或带宽几乎为零(当NodeJS和OS进程的开销被分解出来的时候)。 重点是,我想要一个简单的方法来运行数千个。 我需要什么? 有没有可以以合理的价格($ 10 /月)运行数千个NodeJS应用程序的PaaS? 是否有某种中间件可以在一个Node进程之上为我提供数千个沙箱“分区”? 还是有一些二进制,这是我可以把VPS?

Heroku:如何正确扩展node.js应用程序?

我正在托pipe我的网站heroku ,我们遇到严重的性能问题。 基本上,它是一个node.js/express应用程序,同时提供静态html( AngularJS )和REST APIs供客户端使用。 部署已经接近了,所以我们开始与JMeter进行基准testing,结果没有任何意义 – 添加Web dynos完全没有影响。 起初我以为也许我们的代码有问题,但我已经很确定Heroku是错误的,因为我们得到相同的结果时,基准一些静态图像或HTML。 只是为了确保我的快递中间件没有造成我把静态文件放在快速堆栈顶部的问题。 提前致谢。

node.js上的heroku爱好dynamic,限制

我无法理解Heroku Hobby dyno使用节点的性能限制,这种types只包含1个web worker。 我的heroku服务器用于响应发布请求并启动服务器到服务器的通信。 我们将称之为“过程”。 Node.js是JavaScript,只有一个事件循环,这是否意味着,如果我的Heroku服务器还没有完成与进程,它将无法启动另一个? 客户端,用户发送一个发布请求,启动“进程”。 如果进程不完整,第二个用户是否可以发送另一个请求并期望发生什么事情? 我的服务器将挂起,直到第一个过程完成? 在我的初步testing中,似乎几乎同时发送请求的两个用户没有问题,所以我不确定我会受到什么限制

Socket.io缩放 – 减less消息的数量或消息的大小

我通过一个socket.io node.js服务器发送了大量的消息,并且我有能力发送一个数组中的多个消息,或者单独发送每个消息。 我的问题是,什么规模更好:大量的消息发送less量的数据,或更less的消息发送大量的数据?

数据库支持的工作队列

我的情况 … 我有一组计划定期运行的工作人员 ,每个工作人员都有不同的时间间隔,并希望find一个良好的实施来pipe理他们的执行。 例如:假设我有一名工人前往商店,每周一次购买我的牛奶。 我想存储这个工作,它的configuration在一个MySQL表中。 但是,轮询表(每秒?)看看哪些作业已经准备好放入执行pipe道似乎是一个非常糟糕的主意。 我的所有工作人员都是用javascript编写的,所以我使用node.js来执行,并将beanstalkd用作stream水线。 如果新创build的作业(即在某个特定时间调度一个工作人员)正在asynchronous创build,并且需要持久地存储作业结果和configuration,我该如何避免轮询表格? 谢谢!

使用Dynos在Heroku上缩放Node.js应用程序

我想更好地理解在Heroku上扩展Node.js服务器。 我有一个应用程序,处理大量的数据,并已遇到一些内存问题。 如果Node.js服务器升级到2个dyno,这是否意味着我的应用程序能够在一个线程上处理高达1.024 GB的内存? 我的理解是,单个节点线程的内存限制为〜1.5 GB,超过了2x dyno的限制。 现在,假设我升级到性能-M dyno(2.5 GB内存),是否需要使用集群来充分利用2.5 GB内存? 此外,如果对我的Node.js应用程序提出了大量数据请求,而这些数据在处理的时间超过了分配给该群集的内存量,那么进程会使用分配给另一个群集的某些内存,它只是抛出一个错误?

在Node.js中使用MongoDB进行扩展,我应该什么时候一次查询所有的ID,并行查询每个ID?

可以说我有一个处理N个用户的脚本。 脚本可以看两种方法之一,假设资源充足,速度会更快吗? 我可以使用Promise.all或async.parallel 。 选项1 function processUsers(userIds) { monog.find({_id: { $in: userIds }, (userDocs) => { const tasks = userDocs.map((userDoc) => processUser(userDoc)) async.parallel(tasks, (err, results) => console.log('finished')) }); } 选项2 function processUsers(userIds) { const tasks = userIds.map((userId) => { mongo.findOne({_id: userId}, (err, userDoc) => { processUser(userDoc); }) }) async.parallel(tasks, (err, results) => console.log('finished')) }

使用具有规模的nodejsstream式传输cassandra数据

我有一个要求使用nodejs读取存储在cassandra中的数百万条logging。 我已经准备好了stream式nodejs服务,可以从cassandrastream中读取数据stream,并将数据推送到分析服务器(再次使用stream式服务)。 但是,我不确定如何实现nodejs层的横向扩展,其中nodejs应用程序的多个实例从cassandra没有DUPLICATION读取并将其提供给分析服务器。 任何帮助,这将有很大的帮助。 谢谢。

将Node.js应用程序扩展为数千个同时连接

我们在一个应用程序上做了一些工作,可以让人们通过互联网来打棒球。 它完全存在于亚马逊的AWS生态系统中,我们正在为一个新项目而构build。 该堆栈包括: – 专用的MongoDB和Redis服务器 – 三组不同的nodejs服务器 – 我们正在利用Amazon的API来进行服务器configuration和自动调节 我们面临的问题是,我们还没有能够模拟每个实例超过约15000个并发用户(websocket连接)。 我们应该得到更多; 我们认为是十万分之一。 服务器CPU使用率只有40%。 有关如何扩展node.js应用程序的任何想法,使它有更多的同时连接到一台服务器?

如何在Heroku上扩展节点应用程序?

在Heroku上扩展节点应用程序的最佳做法是什么? 工人什么时候增加工具? Heroku网站说 Crank your web dynos to increase HTTP performance. Crank your worker dynos to empty the queue faster. 我不太清楚这对我的节点应用程序意味着什么。