问题标签 [node-cluster]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - NodeJS 集群,将主进程用于单独的作业是一个好主意吗?
我正在尝试创建一个拍卖应用程序,并且正在考虑使用节点计划来确定每次拍卖何时结束。
这个想法是在主进程上运行拍卖倒计时,同时将 api 的东西留给工作人员。这样,即使工作人员变得拥挤,主进程也应该是免费的,并确保拍卖按时结束。
问题是我在网上找不到任何关于将主进程用于除分叉工人之外的任何东西。那么这是一个好主意吗,或者替代方案是什么?
node.js - 如何在 Node.js 中设置两个具有不同意图的工作人员?
传统上我使用:
设置工作人员但说如果我希望两台服务器在不同的端口上运行而没有一台服务器在发生错误时关闭另一台服务器,那么cluster
仅允许使用这种设置的方法可能是什么。
node.js - Node js集群环境下多次运行Cron Job
我已经建立了 Node JS 服务器集群环境来充分利用我服务器的所有核心。有一个 Cron Job 每天 08 点运行以运行一些任务。但由于集群,它每天 08 点运行 4 次(服务器为 4 核)。我怎样才能解决这个问题,每天只运行一次 Cron Job?
javascript - 当所有 Node 工作人员都死亡时,集群主服务器会发生什么?
因此,我一直在尝试了解 Node 集群的工作原理,并且我有以下代码:
当我运行它然后退出时,Ctrl+C
我收到了这个控制台输出,我的主进程也死了。
所以它正在做我想做的事情,但是当我SIGINT
所要做的就是杀死工人时,为什么主进程也会死?
node.js - 带有粘性会话的 Nodejs 集群
我查阅了有关 nodejs clustering and sticky-session 的文档以及关于此的另一个堆栈溢出答案
如果上面的代码片段在没有分叉的情况下运行,它可以正常工作,但如上面的集群示例所示,它永远不会工作,其中线程已启动但服务器从未初始化。
我读到有粘性集群的替代方案,有人可以就这个主题给出一个适当的权威答案,这对寻找相同的人很有用,另一个主要问题是 app.locals 对象,它用于存储变量一个应用程序实例和多个服务器实例的出现导致此中断,因为不同实例的值会有所不同,因此这种方法会导致一个大问题并且应用程序会中断。回答时请不要复制粘贴一些代码,请提供详细的答案,详细说明接近它的好处和缺点。
我不是在寻找仅限于使用sticky-sessions nodejs模块的答案,我欢迎使用处理器的所有内核并确保会话连续性的所有其他方法。
如果它涉及 RedisStore 或 MongoDb 存储就可以了,我想知道的是关于具有会话连续性的集群的 nodejs 应用程序的标准方法
https://github.com/indutny/sticky-session
node.js - 如何配置 Node.js PM2 在工作人员之间平均分配工作?
我有一种情况,我使用 PM2 创建了一个 Node.js 集群。向工作人员发出的单个请求将花费相当长的时间(2 分钟以上),因为它正在执行密集计算(在一系列步骤中),在不同阶段有几个 I/O 操作(步骤 1 是“通过 HTTP 下载”,一个中间和最后一步是“写入磁盘”)。向集群发送请求的客户端会通过两个因素限制它发送的请求:
- 频率(每秒多少个请求),我们使用慢速(每秒1个)
- 它可以发出多少个打开请求,我们使它小于或等于我们在集群中拥有的节点数
例如,如果集群有 10 个节点,那么客户端只会以每秒 1 个的速度向集群发送 10 个请求,并且不会再发送任何请求,直到有一个或多个请求返回成功或失败,这意味着一个或更多的工作人员现在应该有空做更多的工作,然后客户端将发送更多的工作到集群。
在观察服务器上的负载时,负载均衡器似乎并没有像经典循环分配模式所期望的那样均匀地分配工作。发生的情况是,当集群中有空闲的工作人员时,单个工作人员(通常是第一个工作人员)将收到大量请求。这最终将使工人发生故障。
我们实施了一种机制,以防止工作人员在处理前一个请求时继续处理新请求。这防止了故障,但是尽管集群有空的工作人员,但仍然有很多请求被拒绝服务!
您能想到这种行为发生的原因,或者如何改进 PM2 的工作方式吗?
node.js - Puppeteer - 协议错误(Page.navigate):目标已关闭
正如您在下面的示例代码中看到的那样,我使用 Puppeteer 和 Node 中的一组工作人员通过给定的 URL 运行多个网站屏幕截图请求:
一些解释:
- 每次请求到达时,工作人员都会处理它并在最后杀死自己
- 每个工作人员使用单个页面创建一个新的浏览器实例,如果一个页面的加载时间超过 60 秒,它将重新尝试重新加载它(在同一页面中,因为可能已经加载了一些资源),超时时间为 120 秒
- 完成后,页面和浏览器都将关闭
我的问题是某些合法域会出现我无法解释的错误:
我在一些 git 问题(我现在找不到)中读到,当页面重定向并在开头添加“www”时可能会发生这种情况,但我希望它是错误的......我有什么遗漏吗?
node.js - 扩展 Node.js:在具有许多 vCPU 的 VM 上使用具有小型虚拟服务器或集群进程的自动扩展组?
在了解 Node.js 的集群模块时,我一直在思考以下架构:平衡成本与性能,在云服务的自动缩放中运行 Node.js 应用程序是否更有益(即最便宜但仍可扩展)使用带有一个虚拟 CPU 的小型服务器(例如,AWS 的 t2.small EC2、1 个 vCPU、2gb 内存)或使用更大的服务器(例如,一个 m5.xlarge 4 vCPU、16gb 内存)进行分组,运行 Node.js 来集群四个孩子使用 4 个 vCPU 的进程,但仍然自动缩放?
一个可能的权衡是 AWS 部署另一台小型服务器以进行自动扩展所花费的时间,但在低流量应用程序或实用程序应用程序上,当使用率较低时,您将不得不承担运行较大服务器的成本。但是,如果启动另一台服务器来处理负载所需的时间是名义上的,这是否会否定使用集群模块的好处?
具体来说,我的问题是双重的:这两种方法是否可行,如果可行,我对集群模块在小型服务器方法中有用性的假设是否正确?
javascript - 如何在 expressjs 4.x 应用程序中设置集群?
我有一个expressjs 生成的应用程序,它配置了 socket io,我想在其中实现nodejs 集群。问题是在 Express 4.x 中,服务器侦听配置位于 bin/www 文件中,而不再位于 app.js 文件中。我的应用程序也配置了socket io,所以我也不想刹车。
根据这篇文章,这就是它应该如何在快递应用程序中实现:
应用程序.js
这就是我所拥有的:
应用程序.js
斌/万维网
我该怎么办?这module.exports = app;
就是它给我带来的麻烦