Найдите убийцу производительности
Оптимизация производительности онлайн-сервисов — задача почти суеверная. Группа программистов столкнулась с большим количеством непонятного кода и догадалась друг о друге, использует ли другая сторона весь процессор. Тратьте много времени на запись журналов, просматривая их днем и ночью, пытаясь найти убийцу производительности.
Однако, используя fibjs, это станет легко. Потому что fibjs имеет мощную поддержку профилировщика ЦП и памяти, и его очень удобно использовать.
Ведение журнала
Запустить профилировщик процессора в fibjs чрезвычайно просто, достаточно добавить параметры при запуске --prof
. Интервал журнала по умолчанию – 1000 мс. По мере углубления оптимизации вам потребуется анализировать журналы с более высокой точностью. В этом случае вы можете использовать для --prof-interval
установки интервала. В следующем примере журнал работы fibjs записывается каждые 10 мс.
1fibjs --prof --prof-interval=10 main.js
Обработка журналов
После того, как операция завершится нормально или вы используете Ctrl_c для завершения процесса, в текущем каталоге будет создан файл журнала. Имя файла — fibjs-xxxx.log
. В это время вы можете использовать --prof-process
для обработки сгенерированного журнала:
1fibjs --prof-process fibjs-xxxx.log prof.svg
После завершения операции используйте браузер, чтобы открыть prof.svg, чтобы просмотреть график пламени этого журнала: вы можете нажать, чтобы просмотреть полноразмерное изображение. В полноразмерном изображении вы можете использовать мышь, чтобы просмотреть более подробную информацию. информация: проф.svg .
Интерпретация диаграммы пламени
В сгенерированном графе пламени каждый цветовой блок представляет точку записи. Чем длиннее цветовой блок, тем больше раз он записывается; каждая линия представляет собой слой стека вызовов, и чем больше слоев, тем больше слоев вызывается; вызовы Стек располагается в перевернутом виде, чем ниже цветовой блок, тем оригинальнее функция.
Существует два типа цветных блоков: красный и синий. В профилировщике fibjs красный цвет представляет операции JavaScript, а синий — операции ввода-вывода или собственные операции. В зависимости от проблемы, которую вам нужно решить, области, на которых вам нужно сосредоточиться, будут различаться. Например, если вам нужно решить проблему высокой загрузки ЦП, вам нужно обратить внимание на блоки красного цвета.Если ваше приложение имеет низкую загрузку ЦП, но медленный отклик, вам нужно обратить внимание на блоки синего цвета. Чем больше цветовой блок вверху, тем больше внимания и оптимизации он требует.