Node.js 服务器的活动句柄不断增加,然后使服务器暂停
我已经编写了一个简单的节点API,其唯一目的只是通知用户internet是活动的。我每3秒钟点击一次这个API,它工作正常,直到活动句柄大约为4000或更少,但之后我的服务器停止响应,直到我重新启动服务器。我正在通过pm2运行此服务器。当我键入“pm2 monit”时,我已附加了一个指向服务器映像的链接Node.js 服务器的活动句柄不断增加,然后使服务器暂停,node.js,express,pm2,Node.js,Express,Pm2,我已经编写了一个简单的节点API,其唯一目的只是通知用户internet是活动的。我每3秒钟点击一次这个API,它工作正常,直到活动句柄大约为4000或更少,但之后我的服务器停止响应,直到我重新启动服务器。我正在通过pm2运行此服务器。当我键入“pm2 monit”时,我已附加了一个指向服务器映像的链接 山塔努,为此,我认为使用express是一种过激行为。您可以尝试使用本机模块,也可以尝试使用相同的模块。请在下面找到一个简单的基于乒乓球的服务器的代码 const http = require(
山塔努,为此,我认为使用
express
是一种过激行为。您可以尝试使用本机模块,也可以尝试使用相同的模块。请在下面找到一个简单的基于乒乓球的服务器的代码
const http = require("http");
http.createServer((request, response) => {
response.setHeader("Content-Type", "application/json");
response.write(JSON.stringify({ status: 200, message: "pong" }));
response.end();
}).listen(8080);
我还认为,pm2集群可能会导致这方面的问题。对于此用例,本机集群可以作为pm2的替代方案
使用pm2
尝试上述代码。如果问题仍然存在,请使用模块尝试使用本机群集
下面是使用Sakege进行的负载测试。代码在我的系统中似乎运行良好
缺少您所说的附加图像?你可以复制粘贴文本。然而,这可能是一个非常广泛的原因。取决于pm2的设置方式、机器的限制(如果在本地运行)等。可能是由于node.js是单线程的,因此服务器资源正在耗尽,它充分利用了CPU的潜力,而这正是您可能需要堆叠infra的地方。另外,我看不到pm2 monit映像的链接?活动句柄只是在某种程度上不断增加,并且一些HTTP连接在请求得到服务后不会关闭到某些客户端。形象link@shiva2492我看不到CPU利用率正在达到最大限制。我可以在seige中看到活动句柄的数量吗?@Agnibha-如何使用seige看到活动句柄?
const http = require("http");
http.createServer((request, response) => {
response.setHeader("Content-Type", "application/json");
response.write(JSON.stringify({ status: 200, message: "pong" }));
response.end();
}).listen(8080);