Лучший способ проверить производительность обработчика Express.js? - PullRequest
0 голосов
/ 24 сентября 2018

Я создаю приложение, используя Express.js, мопса и мангуста.У меня есть много обработчиков, которые делают несколько асинхронных запросов БД с использованием await.В целях приблизительной оценки того, сколько времени потребуется для выполнения этих обработчиков, а также того, как долго каждый из ожидающих будет блокировать цикл событий, я добавил библиотеку block-at, которая выводит время в Ms каждый раз, когда цикл событийзаблокирован.Для такого обработчика, как это:

Const handler = async (req, res, next) => {
    Const data1 = await getData1().exec()
    // Do something
    const data2 = await getData2().exec()
    // Do something with data1 and data2
    const data3 = await getData3().exec()
    // Do something with data1, data2, and data3
}

Я увижу один выход из заблокированной функции, например: Блокировано на 734.22 Ms "

Это сбивает с толку, потому что я ожидал увидеть 3отдельные записи, по одной для каждого ожидающего вызова, как он вызывается, затем регистрирует свой обратный вызов и затем возвращается в цикл обработки событий. Насколько я понимаю, использование асинхронных вызовов, подобных этому, не блокирует цикл обработки событий до конца функции-обработчика, но этовывод говорит об обратном. Если мое понимание верно, каков наилучший способ точно измерить то, что происходит в цикле событий в обработчиках, подобных этому, которые могут со временем увеличиваться?

Кроме того, почти одна секунда выглядит какдостаточно долгое время для блокировки цикла событий для извлечения некоторых данных и выполнения бизнес-логики. Существуют ли стратегии для ускорения этого?

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