Node.js 已创建活动句柄,但即使在简单节点JS应用程序中也未销毁
我正在使用Node10.10.0的最新版本,下面是我试图执行的代码的小部分Node.js 已创建活动句柄,但即使在简单节点JS应用程序中也未销毁,node.js,Node.js,我正在使用Node10.10.0的最新版本,下面是我试图执行的代码的小部分 var fs = require('fs'); const express = require('express'); const request = require('request'); const app = express(); async function fun1(req, resp){ let response = await request.get('http://google.com');
var fs = require('fs');
const express = require('express');
const request = require('request');
const app = express();
async function fun1(req, resp){
let response = await request.get('http://google.com');
if (response.err) { console.log('error');}
else { resp.send('fetched response'); };
}
app.get('/', (req, res) => {
fun1(req, res);
});
app.listen(3000, () => {
console.log('Example app listening on port 3000!');
});
我还使用了诊所医生
我正在运行下面的命令
clinic doctor --on-port 'autocannon -c100 localhost:3000' -- node index.js
在执行上述命令时,我得到以下控制台输出
Example app listening on port 3000!
Running 10s test @ http://localhost:3000
100 connections
Stat Avg Stdev Max
Latency (ms) 94.72 75.87 1077.87
Req/Sec 827 257.35 1248
Bytes/Sec 180 kB 55.7 kB 270 kB
9k requests in 11s, 1.96 MB read
9 errors (0 timeouts)
Analysing data
Generated HTML file is 3884.clinic-doctor.html
You can use this command to upload it:
clinic upload 3884.clinic-doctor
我还生成了一个漂亮的UI,它会自动打开,如下所示
问题
为什么我的应用程序在测试性能瓶颈时会继续创建活动句柄,如图中第4个图表所示?我需要关闭任何东西吗?我忘了什么吗?首先,非常感谢我寻找Node.js压力测试工具的这个例子 您的示例设置不正确,
请求
不适用于承诺。有一些人与蓝知更鸟或当地人合作
我使用async/await
调整了您的示例:
const express = require('express');
const request = require('request-promise-native');
const app = express();
function fun1(req, resp) {
return request.get('http://google.com');
}
app.get('/', async (req, res) => {
try {
await fun1();
res.send('fetched response');
} catch (error) {
res.send('error')
}
});
app.listen(3000, () => {
console.log('Example app listening on port 3000!');
});
结果:
请记住,您还必须优雅地关闭任何挂起的服务器实例,如图所示。您的代码没有考虑自动加载请求。它以错误告终。当你运行上述代码时,你能发布你的控制台输出吗?@AnkurSoni我使用了与你提供的完全相同的命令。是的,但是你看到控制台了吗?它在超时请求时出错。请检查。您也应安装
请求<代码>npm i--保存请求