方法的图形化
Odoo内嵌有性能测试器。这一内嵌性能测试器的输出可用于生成由方法所触发调用、查询数、方法内部花费时间及方法及其调用的子方法所花费时间的图表。
这会生成一个名为/temp/prof.profile的文件
一个名为 gprof2dot 的工具会通过这一结果生成图表:
一个名为 xdot 的工具将显示所生成图表:
方法日志
另一个性能优化器可用于记录方法的统计数据:
一旦待分析的方法完成重审后数据会显示为数据统计日志。
Dump栈
向Odoo进程发送SIGQUIT信号(仅对POSIX可用)会让这个进程输出带有消息级别的当前栈跟踪进行日志。在 odoo进程看起来卡住时,向进程发送这个信号准许来知道进程在做什么,并让进程继续其任务。
追踪代码执行
向Odoo进程发送SIGQUIT信号通常足够了,但要查看进程在哪些地方比预期的性能要差的话,我们可以使用 pyflame 工具来替我们执行。
安装pyflame和flamegraph
记录已执行代码
既然已经安装了pyflame,现在我们可以使用pyflame来记录已执行代码。这个工具会每秒多次记录进程的 stacktrace(栈追踪)。一旦完成,我们将通过执行图表来进行展示。
其中的 <PID>是想要图表化的odoo的进程ID。这会等待直至进程灭亡,最大值为1小时,并每秒获取5次追踪。通过pyflame的输出,我们可以使用flamegraph工具生成一张SVG 图表: