微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在所有 CPU 内核上运行 NodeJS 以实现最大的硬件潜力

如何解决在所有 CPU 内核上运行 NodeJS 以实现最大的硬件潜力

硬件:

我在具有 4 核 cpu 和 6GB RAM 的 VMware Workstation 上运行 Ubuntu 20.04 虚拟机

问题:

我一直在寻找如何提升我的 NodeJS 服务器,其中一个解决方案是利用我现在正在做的处理器的所有 cpu 内核。

这是我名为 server.js 的入口文件

const express = require("express");

const app = express();

app.use("/",async (res,req) => {
  req.status(200).send('success');
});

app.listen(4300);

pm2 的帮助下,我产生了最大数量的集群 pm2 start server.js -i max 并且我正在实现此日志:

enter image description here

autocannon 的帮助下,我将此服务器定位为“DDoS”类型,以监控处理多个并发请求的效果

代码如下:

const cannon = require('autocannon')

const localHost = 'http://localhost:4300'

async function startMockUp() {
    let result = await cannon({
      url: localHost,// target url
      connections: 10000,pipelining: 1,duration: 10 // seconds
    })

    console.log('request',result.requests)
}

startMockUp()

这是第一次运行的输出

enter image description here

现在我正在尝试做同样的事情,但只运行一个集群:

enter image description here

得到这个结果:

enter image description here

如您所见,除了单个集群能够处理更多请求之外,我并没有实现运行 4 个并发集群的 x4 加速。

为什么会这样?

我做错了吗?

是否有解决方法来获得更好的结果?

解决方法

考虑使用 cluster to fork off the processes。这是在一台机器上使用多个节点实例的标准方法。我的想法是,按照您启动流程的方式,只有一个实例实际处理请求。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。