Экспресс API сервер блокирует - PullRequest
0 голосов
/ 30 октября 2018

Итак, я тестирую свой сервер 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...