Ken*_*eld 3 python profiling middleware cherrypy
我一直在尝试对我的CherryPy Web服务器进行性能分析,但是该文档缺少如何设置的详细信息。我了解我应该能够cherrypy.lib.profiler用作中间件来安装我的初始服务器。现在,我有如下代码:
server_app = ServerClass()
cherrypy.tree.mount(server_app, '/', '/path/to/config/file.cfg')
cherrypy.engine.start()
cherrypy.engine.block()
Run Code Online (Sandbox Code Playgroud)
我想挂载性能分析中间件,似乎需要以下内容:
from cherrypy.lib import profiler
server_app = ServerClass()
server_cpapp = cherrypy.Application(server_app, '/', '/path/to/config/file.cfg')
server_profile_cpapp = profiler.make_app(server_cpapp, '/home/ken/tmp/cprofile', True)
#cherrypy.tree.mount(server_profile_cpapp)
cherrypy.tree.graft(server_profile_cpapp)
cherrypy.engine.start()
cherrypy.engine.block()
Run Code Online (Sandbox Code Playgroud)
出于某种原因,cherrypy.tree.mount它不起作用,但是,如果我使用cherrypy.tree.graft全部,似乎一切正常(我可以像往常一样向服务器发出请求)
但是,上面的代码cp_0001.prof在下面生成一个文件/home/ken/tmp/cprofile,我不确定如何解释它。我尝试使用pyprof2calltree将数据读取到KCacheGrind中,但是遇到解析错误。我正在做的事情看起来是否正确,如果可以,我该如何解释输出文件?
事实证明,可以使用profiler.pyCherryPy随附的脚本来解释CherryPy生成的配置文件。只需profiler.py在<site-packages>/cherrypy/lib目录中运行,如下所示:
python profiler.py /directory/containing/prof/files 8080
Run Code Online (Sandbox Code Playgroud)
然后localhost:8080在浏览器中导航到,.prof目标目录中所有文件的分析结果将显示在一个简单的文本界面中。
我仍然希望能够将结果导出到调用树中,以使用KCacheGrind进行概要分析,但这似乎可以用于基本概要分析。
引入探查器时,此消息记录在CherryPy v2.1的更改日志中(尽管此页上的其他有关如何设置探查器的详细信息已被弃用)