背景:
由于项目业务逻辑复杂、数据量大、多系统对接等复杂场景造成系统响应慢。
优化思路:
从用户角度出发,在浏览器打开分析接口请求,根据接口响应时间利用profiler图定位接口内部代码具体优化点。当然,建议优化业务类接口,odoo原本接口相对比较成熟稳定,并且框架本身也有完整的体系,很容易引起连带问题,风险较高。
所以本文仅介绍业务代码接口优化方案。
开始之前先简单介绍下profiler。
profiler是python提供的一款优化分析工具,使用简单,只需要在目标方法上加上注解引入相应的依赖包,运行程序即可生成该方法的具体层级调用的.profile文件,再通过两条命令生成具体的可视化图片,图片显示方法内部比较耗时的方法节点调用关系,每个方法节点占用的耗时百分比,调用次数等。
1、准备
pip install gprof2dot
pip install dot
2、找到访问时间较长的页面,F12,查看network
关键路径:web/dataset/call_kw/res.users/get_views
(1)直接是对应的接口,可能分析不到结果,需要找到其中关键的 方法
(2)通过接口调用到对应的方法,这里就是拼接了 get_views ,方法名就是这个
3、引入依赖包
from odoo.tools.profiler import profile(需要指定,因为有其他profile)
在对应的方法上加注解
@profile('profile/save.profile') //profile/save.profile,执行后生成文件的 路径+文件名
比如:@profile('C:/Users/Admin/Desktop/inherit_base2.profile')
4、转文件格式
按顺序执行指令:
gprof2dot -f pstats -o C:/Users/Admin/Desktop/xxx.xdot C:/Users/Admin/Desktop/xxx.profile
dot -Tpng C:/Users/Admin/Desktop/xxx.xdot -o C:/Users/Admin/Desktop/xxx.png
这只是转成png格式,还可以转成其他格式
5、如果执行 dot 指令出错,我们可以安装
Graphviz工具,配置环境
https://graphviz.gitlab.io/_pages/Download/windows/graphviz-2.38.msi
点击下载,注意配置安装路径
用安装路径配置环境变量
可以用 cmd 执行 dot 指令
相关来源: Graphviz安装配置教程(图文详解)-CSDN博客
6、详细分析 profiler内容:Odoo性能优化实战 - 知乎
ps:可以在cmd执行pip install gprof2dot ,就不需要在pycharm 中执行指令了
Odoo性能优化实战(profiler)