我希望能够检测Python应用程序,以便我知道:
我希望这些数据来自生产(不是离线分析) - 因为在不同地方花费的时间在加载时会有所不同。
在PHP中,我可以使用XHProf或instrumentation-for-php来完成此操作。在Ruby on Rails / .NET / Java中,我可以使用New Relic。
是否有推荐用于Python或django的软件包?
答案 0 :(得分:1)
是的,这是完全可能的。例如。在URL中使用一些神奇的开关,比如“?profile-me”,它会触发Django中间件中的分析。
互联网上有很多片段,例如:http://djangosnippets.org/snippets/70/或类似这样的模块:http://code.google.com/p/django-profiling/ - 但我没有使用任何片段,所以我不推荐任何内容。
无论如何,他们采用的方法与我的方法类似 - 即在包装视图的中间件中使用Python Hotshot探查器模块。对于MySQL部分,您可以使用connection.queries形式Django。
Hotshot的好处是可以使用Kcachegrind浏览其输出,如下所示:http://www.rkblog.rk.edu.pl/w/p/django-profiling-hotshot-and-kcachegrind/
答案 1 :(得分:1)
New Relic现在有一个Python包,包括通过mod_wsgi的Django。
答案 2 :(得分:0)
django-prometheus是处理生产工作负载的好选择,尤其是在Kubernetes这样的容器环境中。它具有开箱即用的中间件,用于跟踪请求等待时间和计数(通过视图方法)以及数据库和缓存访问时间。跟踪实际正在执行的查询并不是一个好的解决方案,但这就是ELK之类的日志记录解决方案发挥作用的地方。如果有帮助,我写了一篇文章,介绍了how to add custom metrics to a Django application。