携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第20天,点击查看活动详情
一、SkyWalking性能剖析
SkyWalking的性能剖析能够帮助我们定位代码中影响性能的地方,比如我们下一个订单,需要查询商品->查询库存->创建订单->减库存—>支付->加积分等操作,结果发现一整套下来需要5s的执行时间,如果通过请求日志去排查无疑是很难排查问题原因的。这是SkyWalking的性能分析就可以大展身手了。下面来看一下。
1-1、模拟下单,进行性能剖析
首先通过GateWay调用order下单服务,在order下单的业务中通过feign调用stock库存服务的减库存功能。下面我们在stock减库存业务,让线程等待2s执行,看下SkyWalking能否找到问题。
修改stock减库存服务,让线程等待2s,然后重启stock服务
1-2、在SkyWalking性能剖析新建任务
在右上角点击新建任务
输入需要剖析的接口,填写相关参数
监控时间:此刻:一直监控;设置时间:设置固定的某个时间进行监控
监控持续时间:从开始监控到结束监控的时长
起始监控时间:点击保存之后多长时间之后开始监控
监控间隔:多长时间间隔一次请求
最大采样数:在监控时间段内,采集多少个样本
因为我这边order和stock服务是通过feign进行访问的,因为让线程暂停了2s,因此需要设置一下feign的过期时间,否则就无法正常调用了。
feign:
client:
config:
default:
#不设置connectTimeout会导致readTimeout设置不生效
connectTimeout: 3000
readTimeout: 6000
1-3、访问服务,查看性能剖析
1-3-1、对首层服务进行性能剖析
如下可以看到,这个接口用时一共2168ms,而stock/reduct就占用了2050ms,可见主要这个最耗时。点击分析就可以看到具体是哪里耗时了
再往下就可以看到stock/reduct 蓝色部分基本占用100%比例,服务是通过Feign,这样我们就很容易知道是order服务掉stock服务的,stock/reduct运行的比较慢了。
1-3-2、都子集服务进行性能剖析
通过以上可以知道是通过feign调用stock服务的stock/reduct影响速度,下面我们在对stock/reduct进行性能剖析如下:
通过下图我们就可以分析出来,在调用stock/reduct接口中,一共使用了2015ms,而数据库仅占用了7ms,剩下的2008ms都在调用stock/reduct的业务中消耗了。
点击分析就可以看到SkyWalking帮我们分析导致慢的原因
往下拉就可以看到导致性能慢的原因是线程睡眠了2s,这2s慢的代码在StockController中,这样就找到问题所在了。
通过以上的方法,就可以对程序进行性能剖析,进而解决对应的问题了。