Выбор ответа Middle Производительность и профилирование обновлено

Профиль Python-сервиса в проде

Вопрос

Python-сервис в проде грузит CPU на 100%, перезапускать его нельзя. Как быстрее всего понять, какой код работает?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Подключить py-spy к процессу: сэмплирует стеки без перезапуска. py-spy читает память процесса снаружи и строит профиль или flame graph работающего интерпретатора с малыми накладными расходами. print и cProfile требуют перезапуска, cProfile к тому же заметно замедляет код. top видит только процесс…

Варианты ответа

  1. Добавить print в каждую подозрительную функцию и перезапустить
  2. Подключить py-spy к процессу: сэмплирует стеки без перезапускаправильный ответ
  3. Запустить cProfile, перезапустив сервис под ним в проде
  4. Посмотреть top: он покажет нагрузку по функциям Python

Разбор

py-spy читает память процесса снаружи и строит профиль или flame graph работающего интерпретатора с малыми накладными расходами. print и cProfile требуют перезапуска, cProfile к тому же заметно замедляет код. top видит только процесс целиком, а не функции.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.