问题标签 [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.

0 投票
2 回答
1989 浏览

node.js - 提高 Node JS 服务器应用程序吞吐量的步骤

我有一个非常简单的 nodejs 应用程序,它通过 POST 请求正文接受 json 数据(大约 1KB)。响应会立即发送回客户端,并且 json 会异步发布到 Apache Kafka 队列。同时请求的数量可以高达每秒 10000 个,我们使用在三台不同机器上运行的 Apache Jmeter 进行模拟。目标是在没有失败请求的情况下实现小于一秒的平均吞吐量。

在 4 核机器上,该应用程序每秒处理多达 4015 个请求而没有任何故障。然而,由于目标是每秒 10000 个请求,我们将节点应用程序部署在集群环境中。

实现了同一台机器上的集群和两台不同机器之间的集群(如此处所述。Nginx 被用作负载均衡器,以轮询两个节点实例之间的传入请求。我们预计吞吐量会显着提高(如此所述),但结果恰恰相反。成功请求的数量下降到每秒大约 3100 个请求。

我的问题是:

  1. 集群方法可能出了什么问题?
  2. 这甚至是提高 Node 应用程序吞吐量的正确方法吗?
  3. 我们还对 Tomcat 容器中的 Java Web 应用程序进行了类似的练习,它在单个实例中执行了预期的 4000 个请求,在具有两个实例的集群中执行了大约 5000 个成功请求。这与我们认为 nodejs 比 Tomcat 性能更好的信念相矛盾。由于每个请求模型的线程,tomcat 通常会更好吗?

提前非常感谢。

0 投票
1 回答
29 浏览

node.js - 如何查看哪个集群worker响应了nodejs?

每次向服务器发出请求时,某人如何查看哪个集群工作者响应console.log?我正在使用快递

0 投票
1 回答
2553 浏览

node.js - How to use nodeJS cluster with mySQL pool cluster?

Quick question

If I make a node cluster application with 4 workers (4 instances of my application), should I use mySQL pool or mysql pool cluster? If I use pool it will create one pool for each application but If I use pool cluster it will create 4 pools for each application (16 total). Is this a good implementation or will it actually slow the performance?

Let's make a fake example to illustrate what I am asking. I am creating a nodeJS server app like this.


First, let's make the configuration file for the mysql database (important is the last section of this file where I make the db workers):

DBconfig.js

Then I create a global Library to use in my application where I have my database connection function

globalLib.js

app.js

and in the end I have a cluster file from where I start the server (everything here is important):

cluster.js


Let's assume that I have 4 cpus, so there will be 4 instances of my app.js. Therefore I create 4 database workers one for each cpu in each application so in the end I have:

So that leaves me with a lot of db workers ... The question is, is this a good implementation of nodeJS cluster and mySQL pool cluster? If not which is the right way?

0 投票
0 回答
167 浏览

node.js - Node.js 集群:获取所有连接

我需要计算出整个node.js集群的所有活动连接的数量。我使用 IPC 实现了一个肮脏的解决方案,该master过程跟踪每个人的响应worker,然后返回总和。难道没有更简洁的方法来计算整个活动连接的数量cluster吗?

0 投票
2 回答
1082 浏览

node.js - Node.js Cluster Worker:关闭事件

考虑以下node.js集群配置。如何打开off回调以防止进一步的消息回调?碰巧没有off方法。我必须用一个新的回调来更新回调,而且似乎所有旧的回调都被触发了。

0 投票
1 回答
2689 浏览

node.js - PM2 集群模式与节点集群性能

我了解PM2 集群模式允许我们轻松地在单台机器上跨 CPU 进行扩展。它是否创建了它正在扩展的节点应用程序的多个实例?本质上,它与使用 Nginx 等反向代理在不同端口上运行多个节点应用程序是一回事吗?

然后,有分叉子进程的节点集群。与 PM2 集群模式相比,这种方法是否更有效,因为它运行单个节点应用程序并使用工作线程来处理传入请求?

0 投票
0 回答
1612 浏览

node.js - NodeJS Agenda 调度程序:集群有 2 或 3 个工作人员,作业没有得到“分配”均匀

我正在使用出色的 NodeJS Agenda 任务调度程序 ( https://github.com/agenda/agenda ) 在我的 Node/Express 应用程序中安排后台作业。

议程也可以在节点集群配置中运行,但是我遇到了一个问题(也许我忽略了一些东西,因为这看起来很基本)。

所以我使用了自述文件(https://github.com/agenda/agenda#spawning--forking-processes)中的代码示例来建立一个有 N 个工作人员的集群,每个工作人员(节点集群进程)都有一个议程实例。

现在假设我有 2 个工作人员(进程)并且我从工作人员 1 调用“agenda.now()”,那么这两个工作人员中的任何一个都可以拾取(处理)它,因为他们都在监视队列,对吗?

然而,我总是看到第一个工人接手工作,其他人没有接手工作。

我在看什么?所有的工人都应该监控队列,所以他们都应该接手工作。

0 投票
0 回答
581 浏览

node.js - 共享相同 IP 地址的用户的 NodeJS 粘性会话

我们的NodeJS(使用套接字和 HTTP)项目正在被共享相同公共 IP 地址的用户(所有人都在同一个办公室、同一个网络工作)使用。我已经放置了一个粘性会话实现,它根据用户的公共 IP 地址生成一个哈希,然后为它分配一个节点工作者。这种粘性是socket.io工作所必需的。由于所有用户都共享相同的公共 IP 地址,因此哈希值始终相同,因此仅使用一名工作人员。所有其他工人都没有被使用:-(

由于我使用net.createServer带有选项的非常低级别的 NodeJS 的 API pauseOnConnect,我无法获取任何其他信息,例如标头、cookie 来为每个用户创建唯一的哈希。

问题:

  • 真的需要这种粘性吗?我socket.io-redis用来广播消息。不确定此适配器是否会帮助我处理套接字连接,并且不需要管理明确的粘性。我试过这个,但似乎没有工作。

  • 是否可以从发出的连接对象中读取标头/cookie net.createServer?我认为这是不可能的,因为它在这个级别上没有任何 HTTP 实现。

  • 是否可以利用http.createServerAPI 并将请求对象从主进程传递给工作人员。通过这种方式,我可以读取标题/cookie 并生成唯一的哈希。

  • 最坏的情况,是否可以在代理级别(使用nginx)覆盖客户端的 IP 地址并为每个用户设置一些虚拟的唯一 IP 地址。

0 投票
1 回答
62 浏览

javascript - 总结工人 NodeJS 的价值

我有主人和工人并行计算一些东西。

如何总结他们的结果?

每个工人完成他的工作后,他自杀了,'res'变量没有价值,所以不可能将它累加到任何变量中。

有什么办法吗?

0 投票
2 回答
7261 浏览

node.js - 使用多个服务器实例扩展 websockets/ws

我在单机上使用websockets/ws 。它工作正常。我想在多核和多个实例上水平扩展它。对于多核,我尝试使用pm2,它似乎工作得很好。

第一问:这是最好的方法还是合适的方法?这是我用 pm2 的测试代码

和客户端 websocket 实例

只需使用 pm2 运行服务器和客户端

如果您现在看到日志,pm2 logs ws-client每个客户端每秒都会访问相同的连接(在服务器上)。因此,对于多核 ws,PM2 可以很好地工作。

第二问:如何扩展多个实例? 我刚刚看到了用于水平缩放的SocketCluster,但是它可以与 websockets/ws 一起使用,因为我已经用 ws 开发了代码。水平缩放的其他解决方案可能是什么。