searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

调用链关联代码热点

2024-07-29 09:58:54
6
0

什么是代码热点

代码热点是一种监控诊断工具,通过持续剖析技术定时采集请求线程堆栈快照。

 

如何采集线程堆栈快照

Arthas 是一款开源的线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

 

profiler 是 Arthas 的其中一个命令,使用profiler能采集线程堆栈快照,通过不断的采样,最后收集到的结果生成应用热点的火焰图。

 

profiler 命令支持一下几种分析场景:

  • cpu

  • alloc

  • lock

  • wall

我们利用的是wall的分析能力

  • wall time:进程起止所耗墙上时钟时间,也叫real time
    进程从开始执行到完成,所经历的墙上时钟时间(实际时间),包括其他进程使用的时间片(time slice)和本进程耗费在阻塞(如等待I/O操作完成)上的时间。

如何触发代码热点功能

1、需要先开启代码热点功能开关

2、设置慢请求阈值。

为了降低系统开销,对于低耗时的请求(未达到慢请求阈值),不会触发代码热点数据统计。javaagent会针对上一周期的采集结果,针对慢请求的接口会自动执行热点代码数据统计。具体命令如样例如下:

profiler -e wall -d 30 -f ./wall_output/user.controller.html --include '*user.controller*'

最终会在指定目录生成一份火焰图的html文件

javaagent定时读取wall_output下面的文件,把火焰图的数据提取出来最终存到byconity,存储表字段如下:

  • serviceName

  • timestamp(分钟级别)

  • javaMethod

  • data (火焰图数据)

 

如何关联调用链

在触发热点代码统计的时间段内,所有span都带上wall-clock这个属性,属性值设置为1。前端能根据服务名、javaMethod、触发时间匹配到对应的火焰图数据。

其中有个关键点:火焰图里面只有具体的java方法,没有接口。因此只能用方法名去匹配。

 

 

 

 

 

 

 

 

0条评论
作者已关闭评论
李****涛
13文章数
0粉丝数
李****涛
13 文章 | 0 粉丝
原创

调用链关联代码热点

2024-07-29 09:58:54
6
0

什么是代码热点

代码热点是一种监控诊断工具,通过持续剖析技术定时采集请求线程堆栈快照。

 

如何采集线程堆栈快照

Arthas 是一款开源的线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

 

profiler 是 Arthas 的其中一个命令,使用profiler能采集线程堆栈快照,通过不断的采样,最后收集到的结果生成应用热点的火焰图。

 

profiler 命令支持一下几种分析场景:

  • cpu

  • alloc

  • lock

  • wall

我们利用的是wall的分析能力

  • wall time:进程起止所耗墙上时钟时间,也叫real time
    进程从开始执行到完成,所经历的墙上时钟时间(实际时间),包括其他进程使用的时间片(time slice)和本进程耗费在阻塞(如等待I/O操作完成)上的时间。

如何触发代码热点功能

1、需要先开启代码热点功能开关

2、设置慢请求阈值。

为了降低系统开销,对于低耗时的请求(未达到慢请求阈值),不会触发代码热点数据统计。javaagent会针对上一周期的采集结果,针对慢请求的接口会自动执行热点代码数据统计。具体命令如样例如下:

profiler -e wall -d 30 -f ./wall_output/user.controller.html --include '*user.controller*'

最终会在指定目录生成一份火焰图的html文件

javaagent定时读取wall_output下面的文件,把火焰图的数据提取出来最终存到byconity,存储表字段如下:

  • serviceName

  • timestamp(分钟级别)

  • javaMethod

  • data (火焰图数据)

 

如何关联调用链

在触发热点代码统计的时间段内,所有span都带上wall-clock这个属性,属性值设置为1。前端能根据服务名、javaMethod、触发时间匹配到对应的火焰图数据。

其中有个关键点:火焰图里面只有具体的java方法,没有接口。因此只能用方法名去匹配。

 

 

 

 

 

 

 

 

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0