Измерение производительности в Python
Я пишу веб-приложение на Python, я не решил, хочу ли я использовать Flask, web.py или еще что-нибудь еще, и хочу, чтобы у меня был профиль в реальном приложении.
Кажется, что очень мало информации о том, как вы идете о внедрении инструментария для измерения производительности, а не во многих случаях печатать datetime.now() повсюду.
Каков наилучший способ использования приложения Python для обеспечения хороших измерений. Наверное, я ищу что-то похожее на команды mcc-mini-profiler для команд Stackoverflow.
Ответы
Ответ 1
Вы можете просто запустить инструмент cProfile, который поставляется с Python:
python -m cProfile script.py
Конечно, вам нужно будет создать файл script.py, который будет выполнять части кода, который вы хотите протестировать. Если у вас были некоторые модульные тесты, вы также можете использовать их.
Или вы используете:
import cProfile
cProfile.run('foo()')
чтобы профилировать его с точки входа foo
.
Ответ 2
Амир Салихефендик написал короткий (150 LOC) RequestProfiler
, который описан в этом сообщении в блоге:
Я не пробовал, но поскольку это связующее ПО WSGI, оно должно быть несколько подключаемым.
Ответ 3
Вы можете просто использовать инструмент для повышения производительности веб-приложений общего назначения, например httpperf. Это работает с использованием внешнего клиента и работает с любой средой, поскольку работает со стандартным интерфейсом (HTTP). Поэтому он проверяет полную производительность стека.
Ответ 4
Используйте Новая реликвия Бесплатная система мониторинга. Вы просто устанавливаете агент на сервере и указываете на свой флажок init.py файл. После запуска приложения с надлежащей настройкой агента вы начнете видеть показатели приложений в онлайн-панели New Relic под названием APM.
По умолчанию он покажет вам графики пропускной способности вашего приложения (QPS/RPM), время отклика приложения, верхние транзакции, частоту ошибок, трассировку стека ошибок, если таковые имеются (например, для 500 ошибок), вызовы внешних служб и т.д. Кроме того, вы можете отслеживать ваша статистика системы тоже.