Я использую сторонний API в своем приложении nodejs.
Первое, когда я делаю 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
)?