如何解决在所有 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
并且我正在实现此日志:
在 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()
这是第一次运行的输出:
现在我正在尝试做同样的事情,但只运行一个集群:
得到这个结果:
如您所见,除了单个集群能够处理更多请求之外,我并没有实现运行 4 个并发集群的 x4 加速。
为什么会这样?
我做错了吗?
是否有解决方法来获得更好的结果?
解决方法
考虑使用 cluster to fork off the processes。这是在一台机器上使用多个节点实例的标准方法。我的想法是,按照您启动流程的方式,只有一个实例实际处理请求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。