Flare 开发的服务支持在运行期间对程序进行动态分析,以发现程序的性能热点或者内存分配情况。
目前支持CpuProfiler
以及MemProfiler
来分别分析程序cpu
和内存使用情况, 找到程序中的热点函数或可能的内存泄漏。
要使用Profiler
程序需要先运行一个flare::Server
, 如果只是客户端服务或没有使用flare::Server
, 可以创建一个dummy server
, 可以参考例子。
可以在程序运行中间动态启动Profiler
, 得到函数调用图, 停止。
通过http
的Get
方法访问控制, 可以通过命令行curl
调用, 也可通过浏览器直接访问查看svg
格式的函数调用图。
Profiler
的原理大致都是采样收集函数调用栈,得到汇总调用图。通过设置合理的采样频率, profiler对程序的性能影响不明显。
flag::Server
默认已经链接了prof_cpu_handler
。运行中可以Http
访问uri
: /prof/cpu/start
, /prof/cpu/view
, /prof/cpu/stop
分别来开启, 查看, 停止。需要在运行机器上提前安装pprof
, 在/prof/cpu/view
的时候会通过shell
调用pprof
分析采样结果生成对应的函数调用图。采样频率由环境变量CPUPROFILE_FREQUENCY
控制, 默认每秒钟100次。
提供了TcmallocProfilerHttpHandler
和JemallocProfilerHttpHandler
分别适用于使用tcmalloc
或jemalloc
来分配内存的程序。
两者只能选其一链接, 同时链接编译时就会报错。链接方式为在bin
程序BUILD
中依赖//flare/rpc/builtin:tcmalloc_profiler_http_handler
或//flare/rpc/builtin:jemalloc_profiler_http_handler
, 可以参考例子中的cc_binary
:server
以及je_server
。
需要在运行机器上提前安装pprof
。
当链接tc_prof_mem_handler
后, 程序启动就已经开始采样了, 可以通过Http
访问uri
: /prof/mem/view
来查看采样的结果调用图。
可以启动时设置环境变量TCMALLOC_SAMPLE_PARAMETER
来控制采样频繁, 当程序每分配此大小的内存时就会进行一次采样, 默认值524288(512K)字节为官方建议设置值, 设置小了对程序的性能影响较为明显。
需要在运行机器上提前安装jeprof
。
当链接je_prof_mem_handler
后, 如果想要在程序运行期间开启采样功能, 需要在程序启动时设置环境变量MALLOC_CONF
为prof:true
来开启采样功能。设置后采样就会默认开启。如果想启动时先不激活, 可以设置MALLOC_CONF
为prof:true,prof_active:false
。然后访问uri
: /prof/mem/start
, /prof/mem/view
, /prof/mem/stop
来动态开启, 查看, 停止。
可以启动时设置环境变量MALLOC_CONF
中的lg_prof_sample
来控制采样频率, 默认频率也为每分配512K字节采样一次。
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )