CentOS7 安装编译 pyflame

工作中经常会写一些Python服务, 也会使用第三方的一些代码, 程序运行中经常会遇到很多问题, 比如内存泄漏, 占用CPU过高等(jumpserver就经常会出一些莫名其妙的内存泄露), 这时候可以看看错误日志, 但是错误日志也没有那么详细的说明, 看不出什么问题, 今天介绍的工具就可以很完美地帮助我们查看一些程序运行过程中的各种信息.

1、安装
基本环境是CentOS7版本
yum install libtool -y
yum install autoconf automake gcc-c++ python-devel python34-devel libtool -y


从github下载release压缩包后解压缩
git clone https://github.com/uber/pyflame
cd pyflame/
./autogen.sh
./configure --prefix=/opt/pyflame
make
make install

安装完以后就会在指定的目录出现/bin/pyflame二进制文件

安装svg渲染脚本, 把如下的脚本放到$PATH中:
从https://github.com/brendangregg/FlameGraph  获取 flamegraph.pl
mv flamegraph.pl /usr/local/bin
chmod +x /usr/local/bin/flamegraph.pl

这样就算完成安装了


2、使用
Profile PID for 60 seconds, sampling every 100ms.
pyflame -s 60 -r 0.1 PID | flamegraph.pl > myprofile.svg

或者 Trace Mode
pyflame [regular pyflame options] -t command arg1 arg2...

比如要查看的python进程的Pid是12345, 那么执行如下的命令就可以生成该进程的火焰图:
默认是1秒, 通过参数s, 可以指定时长
pyflame -p 12345 -s 60  | flamegraph.pl > myprofile.svg
然后就可以通过chrome打开这个火焰图了, 具体如何读懂火焰图,
火焰图就是看顶层的哪个函数占据的宽度最大。
只要有"平顶"(plateaus),就表示该函数可能存在性能问题。
以上就是基本的使用教程!

国内访问不了github,直接点击下面附件下载
附件:pyflame.zip



分享到:
关键词:Linux运维

网友留言(1 条)

  1. course
    course 回复Ta
    总结得太好了!大长见识!

发表评论