Итак, я тестирую свой сервер API. Я хотел смоделировать, что если бы 1000 пользователей одновременно вызывали один и тот же маршрут. Чтобы проверить это, я сделал следующее:
const fetch = require('node-fetch');
router.get('/test', async (req, res) => {
let all = [];
for (let i = 0; i < 1000; i++) {
const a = fetch(`http://localhost:3001/custom/a`).then(res => res.json())
all.push(a)
}
all = await Promise.all(all);
res.json('finished')
})
И маршрут, который я тестирую, такой:
router.get('/a', async (req, res) => {
const video = await Video.find().limit(1).exec();
res.json(video)
})
Поэтому, когда я нажимаю на маршрут вручную (через почтальона или браузер), 1 запрос за раз, время ответа составляет около 60 мс.
Но когда я запускаю 1000 маршрутов, каждый ответ похож на ожидание завершения предыдущего. Взгляните на этот журнал на PASTEBIN
Итак, я хочу знать, что я сделал не так? Кто здесь блокирует? Это мангуста и база данных (я пытался увеличить размер пула до 1000, все тот же), или я неправильно понял, как работает Node?