-
Notifications
You must be signed in to change notification settings - Fork 656
Profiling功能
ZhangDi edited this page Dec 23, 2016
·
1 revision
为分析应用程序对资源的消耗方便用户进行问题排查和性能调优,sofa-pbrpc实现了方便快捷的profiling功能。用户通过在浏览器中访问server的监控页面中profiling就可以对server程序进行Profiling操作,直接在浏览器查看profiling生成的dot图。
-
在用户程序的Makefile CXXFLAGS中增加 -DSOFA_PBRPC_PROFILING。
-
在用户程序的Makefile中增加gperftools的头文件并联编libtcmalloc_and_profiler.a。
-
编译并启动用户程序,在浏览器中访问server的监控页面。(假设server监听端口为8080):
监控页面主要包括以下内容:
- 主页: http://localhost:8080/
- 配置参数: http://localhost:8080/options
- 状态: http://localhost:8080/status
- 服务列表: http://localhost:8080/services
- Profiling: http://localhost:8080/profiling
访问Profiling项,选择对CPU或Memory进行Profiling操作。
- 左上角为程序名称、总采样数等。
- View框中选择查看历史Profiling结果,Diff框中选择与之前的结果进行对比查看变化量。
- Dot图中方框代表函数调用,方框中的字段从上到下依次为:函数名,该函数本身占的采样数和比例,该函数及调用的所有子函数累计占采样数和比例,所占比例越大方框越大。
- 方框之间连线上的数字表示被采样到的上层函数对下层函数的调用数,调用越多线条越粗。
通过分析Dot图中的最大方框和粗线的来源和去向,分析程序中的热点。
- 开启memory profiling需要在启动server时设置export TCMALLOC_SAMPLE_PARAMETER=524288的环境变量。该变量表示分配这么多字节内存时做一次采样,默认为0表示不开启内存采样,官方推荐为为524288。
- 左上角是当前程序通过malloc分配的内存总量,顺着箭头上的数字可以看到内存来自哪些函数。
通过在Diff操作查看多次采样的变化量,分析程序的内存使用趋势。