Инструмент NodeJS Artillery.io, дающий запутанный результат
Я проводил тестирование моего локального сервера nodeJS и использовал артиллерийский инструмент для проверки нагрузки на сервер. Итак, здесь я просто хочу проверить уровень параллелизма сервера, например, сколько запросов сервер может обрабатывать одновременно. Пожалуйста, посмотрите на приведенный ниже код и файл конфигурации артиллерии.
Мой код nodeJS -
const express = require('express');
const app = express();
app.get('/', (req, res) => {
// I've used the 5 second delay to make the proper async case
setTimeout(() => res.send('Welcome node!!'), 10000);
});
const server = app.listen(process.env.PORT || 3000, () => {
const host = server.address().address
const port = server.address().port
console.log("Example app listening at http://localhost", host, port)
})
Конфигурационный файл артиллерии -
{
"config": {
"target": "http://localhost:3000",
"phases": [{
"duration": 1,
"arrivalRate": 10000
}]
},
"scenarios": [{
"flow": [{
"get" : {"url": "/"}
}]
}]
}
In short, Using artillery, I'm sending the 1000 requests/second.
Но здесь мне интересно, как Artillery дает успешный результат и как сервер может обрабатывать 10000 запросов в секунду, несмотря на то, что каждый запрос занимает 10 секунд для отправки ответа (я установил таймаут в 10 секунд)
Артиллерийский журнал -
1 ответ
Результаты на скриншоте, которым вы поделились выше, выглядят для меня разумными. Вы пытаетесь отправить 10 000 запросов в течение 1-секундной продолжительности теста, в то время как ваш клиент, сервер, сеть и, возможно, другие факторы, частично или в совокупности, поддерживают ~526 запросов в секунду (RPS), следовательно, ~19- вторая продолжительность вашего теста. Ваше время отклика немного больше 10 секунд, как и ожидалось, учитывая время ожидания, указанное в конфигурации вашего экспресс-сервера, и относительно незначительную обработку / полезную нагрузку. Вы надеялись увидеть, что весь тест будет завершен всего за 10 секунд (~10000 RPS) или что-то подобное?