У меня есть приложение express.js, работающее в кластерном режиме (кластерный модуль nodejs) на производственном сервере Linux. Я использую PM2 для управления этим приложением. Обычно он использует менее 3% ЦП. Однако иногда загрузка ЦП резко возрастает до 100 % в течение короткого периода времени (менее минуты). Я не могу воспроизвести эту проблему. Это происходит только раз в день или два. Есть ли способ узнать, какая функция или маршрут вызывают внезапные всплески ЦП, используя PM2? Спасибо.
@Alaindeseine Да, я указал производство NODE_ENV в файле экосистемы.config.js.
У меня была такая же проблема в службе приложений Azure с помощью экспресс-приложения.
Вы заметили, что журналы растут, когда процессор поднимается на 100%? Или не ? Вы также проверили размер журналов PM2?
Есть ли у вас также показатели памяти, и вы видите что-нибудь примечательное, происходящее с диаграммой памяти одновременно с диаграммой ЦП?
Использование памяти в норме
Мой ответ основан исключительно на моем опыте в этой теме
Для обоих тестов попробуйте использовать такой инструмент, как JMeter, где вы можете разместить одну или несколько конечных точек и запускать их множество за определенный период времени, отслеживая использование ЦП и ПАМЯТИ.
memory leak
из самих API.map()
, .reduce()
для огромных массивов?reboot
?
если да, то вам нужно подозревать, что экспресс-приложение испытывает memory leak
, а сборщик мусора пытается навести порядок.1.5X
больше запросов.Я думаю, что у вас есть медленное синхронное выполнение по какому-то запросу в вашем приложении.
Вы указали производственную среду при запуске процесса PM2?