我们采用python自带的cProfile库来进行函数调用时长采样生成火焰图。
1.在docker内安装snakeviz如图,
pip install snakeviz
2.单进程启动服务器,bin目录下,sh kill_server.sh后sh run_single_server.sh
3.执行
telnet 127.0.0.1 5001
4.输入如下代码
import cProfile
pr = cProfile.Profile()
pr
<cProfile.Profile object at 0x7f13abffe6e0>
pr.enable()
5.此时正在快照,可进行测试。
6.测试完成后执行
pr.dump_stats('filename')
,文件生成在/bin
7.执行
snakeviz filename
会生成本地链接,打开可看profile
8.通过共享profile文件,可实现数据共享
由于文件共享操作比较麻烦,现在有如下解决方案:
1. docker-compose 配置文件增加开放端口映射
2.启动snakeviz,snakeviz -s -H 0.0.0.0 filename
3.替换ip地址为个人pc地址,端口为38000
这样共享新的连接即可查看 如图
替换后连接为:http://10.231.32.150:38000/snakeviz/%2Fhome%2FMessiahServer%2Fserver%2Fbin%2F20201102
分享此连接即可,