runprofileserver

首先,在跟踪分析一门语言和框架前,应该深入了解一下正在使用的语言(框架),这样才能事半功倍.不够扎实的功底会导致在跟踪分析服务时做出错误的假设和判断.有一条经验法则很实用:干净整洁的代码比热情和耐心更实用.

这部分功能正在持续改进中,如果你有好的办法能够跟踪,分析Django框架,请给我们留言

简介

runprofileserver 命令在启动django服务的同时其用了跟踪分析工具,会将服务的分析信息保存到 .prof 后缀文件中.使用 --prof-path 参数指定保存分析文件到指定目录.每一个请求的分析数据都会被保存成一个profile文件.

如果没有指定 --prof-path 参数,分析数据的 .prof 文件会被保存到 /tmp 目录下.建议使用特定目录保存分析文件,这样方便我们随时查看分析数据,也不会弄乱 /tmp 目录,使用windows系统时一定要指定``–prof-path`` 参数,因为windows系统没有 /tmp 目录.

分析文件的名字默认名字是:

{path}.{duration:06d}ms.{time}

也可以通过 --prof-file 参数指定生成的服务分析文件名字.文件名格式规则参考: Format Specification.

例如:

  • “{time}-{path}-{duration}ms” - 用请求的道达时间命名分析文件.
  • “{duration:06d}ms.{path}.{time}” - 用请求的相应时间命名分析文件.

聚合profile

Django提供了一个profile文件聚合的工具 gather_profile_stats.py ,在Django安装目录的 bin 目录下可以找到.

KCacheGrind

新版本的 runprofileserver 命令可以把分析的结果文件保存成 KCacheGrind 格式文件,这样就可以通过 KCacheGrind 的分析工具来查看分析数据.

例子:

$ mkdir /tmp/my-profile-data
$ ./manage.py runprofileserver --kcachegrind --prof-path=/tmp/my-profile-data
Validating models...
0 errors found

Django version 1.0-post-release-SVN-SVN-unknown, using settings 'complete_project.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[13/Nov/2008 06:29:38] "GET / HTTP/1.1" 200 41107
[13/Nov/2008 06:29:39] "GET /site_media/base.css?743 HTTP/1.1" 200 17227
[13/Nov/2008 06:29:39] "GET /site_media/logo.png HTTP/1.1" 200 3474
[13/Nov/2008 06:29:39] "GET /site_media/jquery.js HTTP/1.1" 200 31033
[13/Nov/2008 06:29:39] "GET /site_media/heading.png HTTP/1.1" 200 247
[13/Nov/2008 06:29:39] "GET /site_media/base.js HTTP/1.1" 200 751
<ctrl-c>
$ kcachegrind /tmp/my-profile-data/root.12574391.592.prof