我在自己的nodejs应用中使用了第三方API。
首先,当我做hey -c 20 -z 30s -cpus 1 http://api_url.com
时,我会得到Requests/sec: 57
的信息。
原始API响应约为275000个符号(UTF8)(api响应为JSON
)。
我的应用程序的简化示例:
const req = () => {
const url = 'http://api_url.com';
return new Promise((resolve, reject) => {
const r = http.get(
url,
(res) => {
res.setEncoding('utf8');
let rawData = '';
res.on('data', chunk => {
rawData += chunk;
});
res.on('end', () => {
const parsedData = JSON.parse(rawData);
resolve(parsedData);
});
});
});
}
koaRouter.get("/", async (ctx, next) => {
ctx.type = "html";
const data = await req();
ctx.body = data;
});
app.use(koaRouter.routes()).use(koaRouter.allowedMethods());
app.listen(9000, () => {
console.log("\n--------- Started ---------");
});
如果我运行hey -c 20 -z 30s -cpus 1 http://localhost:9000
,那么我大概会得到Requests/sec: 15
。
我认为这与较大的API响应有关,因为如果我在获取第一个块后停止了每个请求:
res.on('data', chunk => {
resolve('end');
r.abort();
});
运行hey ....
大约提供Requests/sec: 50
。
我知道我可以在集群模式下运行nodejs应用程序,但是就我而言,如果以Requests/sec
模式运行,是否可以增加fork
?