Выбор ответа Middle Производительность и профилирование обновлено
Профиль Python-сервиса в проде
Вопрос
Python-сервис в проде грузит CPU на 100%, перезапускать его нельзя. Как быстрее всего понять, какой код работает?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Подключить py-spy к процессу: сэмплирует стеки без перезапуска. py-spy читает память процесса снаружи и строит профиль или flame graph работающего интерпретатора с малыми накладными расходами. print и cProfile требуют перезапуска, cProfile к тому же заметно замедляет код. top видит только процесс…
Варианты ответа
- Добавить print в каждую подозрительную функцию и перезапустить
- Подключить py-spy к процессу: сэмплирует стеки без перезапускаправильный ответ
- Запустить cProfile, перезапустив сервис под ним в проде
- Посмотреть
top: он покажет нагрузку по функциям Python
Разбор
py-spy читает память процесса снаружи и строит профиль или flame graph работающего интерпретатора с малыми накладными расходами. print и cProfile требуют перезапуска, cProfile к тому же заметно замедляет код. top видит только процесс целиком, а не функции.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.