Вывод профиля использования процессора на 100%, что может вызвать это на основе нашего журнала профиля? - PullRequest
0 голосов
/ 27 июня 2019

У нас есть масштабный проект nodejs (~ 1 млн. + Пользователей), который внезапно сильно бьется в нашем процессоре.(Epyc 24c 2ghz)

Мы пытались отладить то, что использует весь наш процессор, используя профилировщик (и я могу показать вам вывод внизу), и он ведет себя очень странно, какой бы он ни был.

У нас есть мастер-процесс, который порождает 48 кластеров, после того как все они загружены, загрузка ЦП постепенно увеличивается до максимума.После убийства скопления Лос-Анджелес вообще не падает.Однако после уничтожения мастер-процесса все возвращается на круги своя.

Очевидно, что мастер-процесс не максимизирует все потоки, и уничтожение кластера должно ДЕЙСТВИТЕЛЬНО делать свое дело?

profile

Мы даже полностью прекратили пользовательский ввод приложения и кластера, и это совсем не уменьшило использование процессора.

У нас есть множество файлов журналов, которые мы можем отправить, если хотитеих.

1 Ответ

0 голосов
/ 28 июня 2019

Исходя из профиля, похоже, что код тратит много времени на получение текущего времени из системы.Возможно, у вас есть Date.now() (или oldschool, очень неэффективный +new Date()) вызовы вокруг множества часто используемых, относительно быстрых операций?Попробуйте удалить их, вы должны увидеть ускорение (или падение загрузки ЦП, соответственно).

Что касается остановки пользовательского ввода без снижения нагрузки на ЦП: возможно, вы планируете обратные вызовы?Или обещания, или другие асинхронные запросы?Нетрудно написать программу, которая должна быть только запущена, а затем постоянно загружать процессор самостоятельно.

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

...