最近接手的 Apache HUE 项目性能出现了问题,线上经常出现响应时间过长或因为时间过长而无法服务等问题.老大让我准备弄个性能分析工具,便于追踪和分析平台当前的瓶颈出现在哪里.

那就搞起吧!先从代码性能分析入手.本篇博客分享的也是代码层面的性能分析.

之前用过的就有 debug_toolbar 插件. 这款插件主要可以用来DB查询语句及耗时时间,具体的文档详见:

Django Debug Toolbar

其有详细的安装配置教程.笔者使用的 HUE 是 基于 Django 1.6 的, 用最新版本的 toolbar 出现了兼容性问题.没办法,既然用不起来,就找个可以使用的版本吧.这里使用的是 django-debug-toolbar==1.3.2, 其依赖的一个库是sqlparse==0.1.9.

安装完成后,我们需要在 Odeon 中做下集成.

  1. 在 INSTALLED_APPS 中添加 debug_toolbar APP:
INSTALLED_APPS = (
# ...
'django.contrib.staticfiles',
# ...
'debug_toolbar',
)
  1. 在 MIDDLEWARE_CLASSES 中添加 debug_toolbar 中间件:
MIDDLEWARE_CLASSES = (
# ...
'debug_toolbar.middleware.DebugToolbarMiddleware',
# ...
)
  1. 在 urls.py 中添加 debug_toolbar 的 URLs:
from django.conf import settings
from django.conf.urls import include, patterns, url if settings.DEBUG:
import debug_toolbar
urlpatterns += patterns('',
url(r'^__debug__/', include(debug_toolbar.urls)),
)

说明: Odeon 的 url位置是 desktop/core/src/desktop/urls.py

  1. 配置 Internal IPs:

Debug Toolbar 仅仅会在你指定的 IP 中展示,而我们指定需要展示的 IP可以在 INTERNAL_IPS 参数中配置。我这里的配置如下:

  INTERNAL_IPS = [
'127.0.0.1',
'192.168.5.20'
]

如果不指定, 其默认是 127.0.0.1

配置好之后,就可以使用了.





这款插件还可以分析内存使用情况.具体自己 Google 就可以啦.

接下来,我们需要去分析 Django 中哪块比较耗时.怎么办呢? 在 Python 官网上面,看到了 cProfile:

Python cProifle 文档

其可以展示出本次执行每个模块耗时时间,还可以支持排序, 返回数据条数等参数.感觉厉害,那就用起来. 在使用前,为了避免重复造轮子,看下 git 上有没有人已经做了这么一个中间件.果然!很多嘛!

Django Profile

Django Profile Middleware

我借助了其中的一个,自己改改就用起来了.详情可以见下面的截图:





至此,基本上算是结束了.但是,就在不经意间, 笔者发现了更好用的.哈哈!

接下来要分享的就是 KCacheGrind + django-extension 的使用.

django-extensions 的代码和文档见下:

Django extensions代码

django-extensions 文档

我使用的是其中的 profile 模块:

django-extensions profiler

通过生成 prof 文件后,我们可以借助 KCacheGrind 来查看具体的图形化信息,很直观的可以展示出调用和耗时信息.KCacheGrind 的安装在这里就不啰嗦了.直接上运行结果图:







看起来感觉更直观了.但是,KCacheGrind 虽然功能强大,但其输出的分析树貌似并不完整.不过够用了.

<<Python高性能编程>> 一书中,还提到了其他的一些 profile 类库:

Python, Django 性能分析工具的使用的更多相关文章

  1. 强大的django-debug-toolbar,django项目性能分析工具

    强大的django-debug-toolbar,django项目性能分析工具 给大家介绍一个用于django中debug模式下查看网站性能等其他信息的插件django-debug-toolbar 首先 ...

  2. Python性能分析工具Profile

    Python性能分析工具Profile 代码优化的前提是需要了解性能瓶颈在什么地方,程序运行的主要时间是消耗在哪里,对于比较复杂的代码可以借助一些工具来定位,python 内置了丰富的性能分析工具,如 ...

  3. 系统级性能分析工具perf的介绍与使用

    测试环境:Ubuntu16.04(在VMWare虚拟机使用perf top存在无法显示问题) Kernel:3.13.0-32 系统级性能优化通常包括两个阶段:性能剖析(performance pro ...

  4. 正确使用Android性能分析工具——TraceView

    http://blog.jobbole.com/78995/     首页 最新文章 IT 职场 前端 后端 移动端 数据库 运维 其他技术 - 导航条 - 首页 最新文章 IT 职场 前端 - Ja ...

  5. Linux性能分析工具与图形化方法

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~. 作者:赵坤|腾讯魔王工作室后台开发工程师 在项目开发中,经常会遇到程序启动时间过长.CPU使用率过高等问题,这个时候需要依靠性能分析工具来 ...

  6. 系统级性能分析工具perf的介绍与使用[转]

    测试环境:Ubuntu16.04(在VMWare虚拟机使用perf top存在无法显示问题) Kernel:3.13.0-32 系统级性能优化通常包括两个阶段:性能剖析(performance pro ...

  7. Android 常用的性能分析工具详解:GPU呈现模式, TraceView, Systrace, HirearchyViewer(转)

    此篇将重点介绍几种常用的Android性能分析工具: 一.Logcat 日志 选取Tag=ActivityManager,可以粗略地知道界面Displaying的时间消耗.当我们打开一个Activit ...

  8. 使用 profile 进行python代码性能分析

    定位程序性能瓶颈 对代码优化的前提是需要了解性能瓶颈在什么地方,程序运行的主要时间是消耗在哪里,对于比较复杂的代码可以借助一些工具来定位,python 内置了丰富的性能分析工具,如 profile,c ...

  9. 即时性能分析工具 Pyroscope

    当网站上线后,流量增加或短暂功能故障,都会造成使用者体验相当不好,而这时该怎么快速找到性能的瓶颈呢?通常 CPU 达到 100% 时,有时候也很难复制及找出关键问题点. 本篇文章,我们会介绍一套工具叫 ...

随机推荐

  1. 完毕乔布斯的梦想:一个免费wifi共享的乌托邦

    早在2007年推出iPhone时,乔布斯就提出这种如果:商业区与居民区的wifi路由器全民开放,实现与路人共享网络之便.能够想象,那算是一个wifi共享的乌托邦. 数年过去了,乔布斯的梦想依然没能全然 ...

  2. POJ3370&amp;HDU1808 Halloween treats【鸽巢原理】

    题目链接: id=3370">http://poj.org/problem?id=3370 http://acm.hdu.edu.cn/showproblem.php?pid=1808 ...

  3. html-上左右布局方式---ShinePans

    文件包括 main.html  top.html  left.html  childhood.html  moonsong.html  herethesea.html 主要布局效果: 代码: main ...

  4. CodeForces 550B Preparing Olympiad(DFS回溯+暴力枚举)

    [题目链接]:click here~~ [题目大意] 一组题目的数目(n<=15),每一个题目有对应的难度,问你选择一定的题目(大于r个且小于l个)且选择后的题目里最小难度与最大难度差不小于x, ...

  5. Android Jni 调用

    Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 Chap 3:javah命令帮助信息... 16 Chap 4:用javah产生一个.h文件... 17 Chap5:j ...

  6. 英语影视台词---六、Saving Private Ryan Quotes

    英语影视台词---六.Saving Private Ryan Quotes 一.总结 一句话总结: Saving Private Ryan is a 1998 American epic war fi ...

  7. hpuoj--1695--一道签到题(KMP)

    1695: 一道签到题 时间限制: 2 Sec  内存限制: 128 MB 提交: 72  解决: 36 [提交][状态][讨论版] 题目描述 我想说这是一道签到题,意思就是本次测试中最水的一道,不过 ...

  8. http --- 从输入URL到页面加载的过程发生了什么?

    可以分为这几个大的过程: DNS解析 TCP连接 客户端发送HTTP请求 服务器处理请求并返回HTTP报文 浏览器解析渲染页面 结束 其中(1)DNS解析可以理解为主寻找这个IP地址的过程,其中如果找 ...

  9. Dictionary subtraction

    Finding the words from the book that are not in the word list from words.txt is a problem you might ...

  10. checkbox和文字不再同一水平线上

    为了演示效果,我故意将文字变为12px,将复选框变大,看到的效果就是下面的那样 然后,我们通过给复选框添加vertical-align:middle:让文字和复选框达到同一水平线的效果