У меня некоторое время возникали неоднозначные проблемы с производительностью приложения NodeJS с приложением MYSQL. Короче говоря, некоторые запросы очень долго возвращали ответ браузеру. до 20 секунд, в некоторых случаях
с использованием chrome devtools для контроля времени, данные в столбце Time ниже показывают значительные различия между временем отклика для той же конечной точки .
Для дальнейшего изучения проблемы я настроил приведенный ниже код для одного из обработчиков конечных точек, чтобы отслеживать задержки в консоли. В этом примере яЯ запускаю приложение на локальном ПК и подключаю его к удаленной производственной базе данных на сервере.
async function getSomething(param) {
const start = new Date().getTime();
const something = await Model.where({ field: param }).fetch();
const end = new Date().getTime();
console.log('delay: ', end - start, 'ms');
return something;
}
Я выполнил десять запросов к одной конечной точке , приведенные ниже данные показывают задержки, зарегистрированные в консоли VS время, необходимое для возврата данных в браузер.
числа в миллисекундах
некоторые ответы возвращаются обратно в браузер практически без или с очень небольшой задержкой, как показано на втором и последнемстрока, тогда как некоторые другие запросы показывают существенную разницу во времени, которое требуется для извлечения данных из базы данных, и во времени, которое необходимо отправить в браузер.и это происходит в большинстве случаев.в некоторых других случаях для извлечения данных из базы данных требуется очень много времени, как показано в строке № 3.
различия для меня произвольны, что затрудняло поиск шаблона проблемы.
Вот снимок экрана с метриками экземпляра приложения с моей консоли Amazon. Это может помочь кому-то найти что-то, что может помочь.
Более того, я использую диспетчер процессов PM2 для управления приложением на сервере, и это еще один снимок экрана анализа метрик приложения.
Я был бы очень признателен, если бы кто-то указал пальцем на то, куда еще я мог бы обратиться, чтобы определить и устранить проблему.
заранее спасибо.