重要说明

试用提供两种账号,分别是体验账号、试用账号。

体验账号:用户无需任何配置工作,可以直接进行压测demo 业务链路,查看压测实况、压测报告、性能分析等结果,无法编辑、新增内容,千万不要在体验账号接入应用,体验账号的数据所有用户都可以查看。

试用账号:用户可以亲自动手接入 demo 应用,配置影子库表、压测脚本、压测场景等从 0 开始体验接入到压测的全过程。
目前入门试用仅支持使用我们提供的 Demo应用,如需接入自己的应用,因为可能涉及到更复杂的链路和中间件,需要再找相关支持人员(销售、售前、试用负责人)沟通协商后再接入。

Takin 使用流程图

1、前置准备


附件: 下载地址 提取码: 3bry

开始试用前,您将获取相关文件,包含:

  • 账号信息,您可以登录 - Takin商业演示版
    • DemoAppFile:可以直接部署 Demo应用到您本地机子来快速试用;
    • Agent:部署到您需要压测的应用
    • JmeterFile:Demo 应用创建压测时所对应的压测脚本和压测数据

      1.1、 Agent 接入和 Demo应用部署

      使用前先接入探针,请参考快速接入 Agent

2、链路梳理

接下来,请发起对目标接口的流量请求,ip 和地址要用部署 Consumer(DemoApp3)这个应用的地址和端口:

curl  http://192.168.100.227:9091/dubbo/update -X PUT -d '{"id":6,"userName":"testa","password":"123"}' --header "Content-Type:application/json"

进入【链路梳理】-【业务活动】页面,新增业务活动

【此处已为您梳理出了目标接口】

选择提供入口的应用test-egg-consumer-0.0.1-SNAPSHOT,服务类型http,和服务路径地址,这里已自动为您梳理出了目标接口所用到的应用、中间件等数据信息。


点击确定,保存业务活动。保存成功后,点击【详情】可查看该业务活动的具体链路信息。


链路接入问题排查

1、log server busy问题
演示服务器繁忙(如图),演示环境对接非常多的演示压测请求,造成服务器繁忙,找相应的对接人和开发跟进处理

2、其他问题
如果发送流量请求或者链路未能出现,请打包各日志(日志路径在快速接入 Agent-1.2 配置日志路径)上传给相应对接人找开发排查;

2.1、应用管理-白名单配置

点击应用节点,可查看该节点提供的对外服务


接下来,需要将此服务添加到白名单,表示压测流量经过该服务时,允许通过。

进入【应用配置】-【应用管理】,找到对应的应用test-egg-consumer-0.0.1-SNAPSHOT,点击进入【应用详情】


切换到【白名单】,找到链路梳理出的服务名称,操作切换白名单开关,打开白名单



点击【确认加入】


依次点击其他的2 个应用,查看应用提供的对外服务,按上述步骤加入到白名单。

DemoApp2–白名单方法

APP:test-egg-provider-0.0.1-SNAPSHOT:dubbo:com.leon.api.service.IHelloworldService:1.0.0#update(Long,String,String)

DemoApp1–白名单方法

APP:test-rds-rds-mysql-demo-1.0.0:http:/rds-web/api/update#PUT

2.2、应用管理-影子库表配置

点击 mysql 节点的上游应用,查看该应用可查看该应用所调用的各个中间件信息。

此处调用了数据库节点:jdbc:mysql://192.168.100.227:3306/trodb,使用了数据表和影子数据表:user,PT_USER。

为了保障压测流量的数据不会影响业务数据,需要对压测流量的数据进行隔离,建立影子库/表,将压测流量导向影子库/表。

此处我们使用影子表方案。

2.2.1、线下建表

请 DBA 同学在jdbc:mysql://192.168.100.227:3306/trodb数据库下,新建影子表:PT_USER(可自定义),我们在附件中的 DemoApp 文件夹提供了user.sql 文件,导入建表并保证有id=6的数据。

2.2.2、平台配置

进入APP:test-rds-rds-mysql-demo-1.0.0应用的详情页,切换到【影子库/表】,新建影子库表


选择【数据库】类型,【影子表】方案,输入链路梳理出的数据源地址:

jdbc:mysql://192.168.100.227:3306/trodb

输入DBA 建好的影子表名称PT_USER(保持与线下表名一致),保存配置

2.3、链路调试

远程服务白名单和影子库表都配置完成后,可以对目标接口进行接入调试,查看是否成功接入。


点击【去调试】,可以对目标接口进行接入调试,查看是否成功接入。

新建链路调试配置,输入对应的接口信息,以及请求参数:URL 改为用入口应用(DemoApp3) 的外网 IP 地址。
(可登陆https://www.ip138.com/ 获取外网ip)。

点击【开始调试】-【确认调试】

出具调试结果:调试成功,表示可以进入下个步骤了。

3、压测脚本准备

配置以及调试好压测链路之后,即将可以准备开始压测,在压测之前需要为压测链路配置压测脚本以及需要用的压测数据,如压测需要读取的数据,或者需要写入的数据等。如果是使用 Demo 应用进行压测,可以直接使用我们提供的【附件 3-压测脚本数据】。


进入【脚本管理】页面,新增脚本

在 JMeter 按照需要压测的链路,编写好jmx压测脚本和压测铺底数据csv,并上传到 ForceCop 脚本管理,目前Demo 压测没有用到压测铺底数据,后续如果有需要用到的可以自己构造。

注意事项:

  1. jmx压测脚本必须与某个业务流程或者业务活动关联;
  2. jmx压测脚本必须包含业务流程或者业务活动的 api 入口;

4、压测

以上步骤全部准备好之后,我们可以开始新建压测场景来开始压测。配置压测场景,关联对应的业务活动,制定业务活动的TPS、RT、成功率等性能指标的压测目标,设置合适的对业务活动进行压测。

4.1、压测场景

进入【压测场景】页面,新建压测场景

选择配置类型:业务活动,选择需要压测的业务活动,并选择使用的脚本

设定业务活动的目标性能指标:目标 TPS、目标 RT、目标成功率、目标 SA


能够对压测链路使用不同的施压配置:

压力模式:

压测的特殊协议约定,可设置某些指标出现异常结果时进行报警提醒或立即终止压测,

  1. 可选择全部或单个业务活动;
  2. 选择指标,可从TPS、RT、成功率、SA中选择;
  3. 设置触发条件和阈值;
  4. 点击➕可添加多条SLA规则;
    终止条件为必填,至少需要一条规则,告警条件可不填;



试用时,可不用数据验证,直接填写1分即可。

保存完压测场景之后,就可以在列表点击启动压测了。

4.2、压测实况&压测报告

在压测过程中,需要实时关注压测的指标变化情况,以便于能对压测做出实时性的判断和应急操作。压测实况正是在压测过程中对压测链路进行实时监控的可视化界面,压测实况的全部数据都会保存在压测报告中,也可以手动停止压测,直接到压测报告中查看完整数据。


** 4.3、压测报告**

在压测结束后,系统会自动生成一份压测报告,将本次压测所产生的数据进行记录和存档,可随时通过查看报告来回溯压测时的性能指标变化情况,分析性能瓶颈与定位定能问题。

可通过压测场景-查看报告按钮查看,也可以通过菜单路径:压测管理>压测报告查看。

报告详情页包括:压测结果总览、问题分析、压测概览、压测明细、容量水位、告警明细、请求流量明细等。

4.3.1、压测结果总览

压测结论和结果指标:压测是否通过、具体的告警数量、请求总数、最大并发、TPS、平均RT、成功率、SA;


4.3.2、问题分析

瓶颈接口:问题分析指本次压测后产生的问题,包括瓶颈接口与风险机器

风险机器:风险机器列表是指通过分析压测过程中各节点的资源使用情况,并将其中可能存在风险的机器进行展示的列表。

这里发现风险机器3台,查看风险详情



可以看到 CPU 已经要打到100%了,需要考虑下扩容。

4.3.3、压测概览

可查看压测全局或单个业务活动的TPS、RT、成功率、SA的指标趋势。


4.3.4、压测明细

可查看各个业务活动的具体压测明细指标,包括请求数、平均TPS的实际与目标值、平均RT的实际与目标值、请求成功率的实际与目标值、SA的目标与实际值、最大TPS、最大RT、最小RT;


4.3.5、容量水位

容量水位会统计各应用及应用下的机器节点的容量指标变化情况,包括CPU利用率、CPU load、内存利用率、磁盘I/O等待率、网络带宽使用率等。



可以看到 CPU 已经要打到100%了,需要考虑下扩容。

4.3.6、告警明细

压测过程中根据SLA设定触发的压测告警信息


4.3.7、请求流量明细

记录压测过程中所有的具体请求明细数据,每个请求均拥有唯一的TraceID标识,可点击请求详情查看具体的请求采样日志,包括调用的接口服务、所属的应用、携带的参数、请求状态与本次请求的时间轴,日志信息保留3天,过期会自动清除;


选择耗时较长的请求,查看链路调用详情

5、性能分析

性能分析模块的作用主要是在压测期间,当发现存在耗时高的请求节点或资源使用高的应用时可以进一步的深入分析数据,帮助用户缩小问题的范围,主要包含功能有:线程分析、内存分析、方法追踪。

5.1、如何在压测中查看线程分析

合理的线程管理可以降低资源消耗、提高响应速度与稳定性,对于系统的性能表现有着十分重要的影响,因此在压测过程中对于线程的表现也需要进行关注。


线程分析入口:压测实况>容量水位>某一台具体的机器性能详情

1.当我们在压测中查看机器的容量水位时,若出现某台机器的CPU、内存等指标居高不下时,通常需要对其线程情况进行分析,此时可以点击右上角的深度分析按钮进入该应用进程的线程分析页面,注意从不同的机器点击进入时只能看到对应的进程数据;


2.线程分析页面首先会显示一个压测期间线程与CPU利用率随时间变化的曲线,可以通过该曲线查看线程数量与CPU使用率在某些时刻是否发生了异常变化,曲线上提供了数据采样点,采样频率为5秒;可以点击曲线上的某一个点来查看该时刻的线程情况;


3.左下方会根据选取的时刻展示当前所有的线程情况,并按照CPU利用率降序排序,可以直接观察到哪些线程的CPU使用率较高,也可以通过切换状态来查看不同状态下的线程情况;


4.对于某个需要进一步观察的线程,也可以点击其名称,右侧会展示该线程随时间变化的CPU利用率曲线,可用于判断该线程占用CPU是否存在异常;


5.对于已经确认异常的线程,可以点击其方法栈,查看具体有异常的类名和代码行,确定问题所在。

6.所有压测期间的线程与CPU利用率数据均会随压测报告进行存档,可在压测报告中反复查看;

5.2、如何在压测中查看内存分析

对于JAVA应用,堆内存的分配与使用情况也会影响到应用的性能标表现,在压测中也需要关注堆内存的使用情况。


内存分析入口:压测实况>容量水位>某一台具体的机器性能详情

1.当我们在压测中查看机器的容量水位时,若出现某台机器的CPU、内存等指标居高不下时,除了线程分析以外也需要对堆内存的使用情况进行分析,此时可以点击右上角的深度分析按钮进入当前进程的内存分析页面或在原线程分析页面的tab进行切换;


2.内存分析页面首先会显示一个压测期间总堆存大小、年轻代使用量、年老代使用量、永久代使用量随时间变化的曲线,可以通过该曲线查看各区域的内存使用情况是否发生了异常变化;

3.也支持将内存dump下来进行本地分析,点击右上角的dump内存按钮即可;


4.结合下方的GC统计可以查看压测期间young gc与full gc的触发频次与耗时,可以观察是否频繁触发了full gc

5.所有压测期间的堆内存与GC数据均会随压测报告进行存档,可在压测报告中反复查看;

5.3、如何在压测中进行方法追踪


当在压测过程中发现某些请求的耗时特别高时,会希望能够进一步分析是具体哪个方法耗时较高,以便可以对这个方法进行性能优化,达到使整体链路性能表现提升的效果,此时可通过方法追踪的功能进行定位。

方法分析入口:压测实况>请求流量明细>请求详情

1.当发现某个请求的某个节点比较慢时,可以点击节点后方对应的开启方法追踪按钮,对该接口/服务背后的方法进行深入的挖掘;


2.输入需要追踪的类名#方法名,点击开始追踪,系统会对此方法最近5秒内的请求进行采样和分析,统计其下一级的所有调用子方法的耗时和所在代码行;


3.此时可以看到子方法中各个方法的耗时,若子方法仍存在下一级调用方法,则可以选择某个耗时较高的方法点击「+」图标,再进一步进行高耗时定位,系统将再次对此方法最近5秒内的请求进行采样和分析,统计其下一级的所有子方法的耗时和所在代码行。可以继续选择耗时较高的子方法重复此操作,直至最终发现真正耗时高的子方法是哪个。

注意:深入追踪最多可以追踪5层,当调用层级较深时,仅能将耗时较高的方法定位到一个较小的层次,可能无法定位到真正耗时高的具体方法;


4.方法追踪同时只能开启一个任务,因此若开启追踪时恰好有其他用户也在发起追踪时,系统会提示追踪失败,此时请等待5秒后重试即可;

5.所有开启过追踪的方法记录均会随压测报告存档,可在压测报告中反复查看,但未追踪过的方法记录将不会存入压测报告;

关于方法追踪的详细用法,可以查看【进阶用法】性能分析-方法追踪

5.4、如何在压测后查看历史数据

所有线程分析、内存分析与追踪过的方法记录均会与当次的压测报告共同存档,可在压测报告中进行反复查看。


入口:压测报告>性能分析报告

1.点击右上角的性能分析报告即可进入本次压测的性能分析记录页面;


2.性能分析报告默认展示第一个应用与进程的数据,如果需要查看其他应用或进程数据需要在右上角选择应用与进程进程查看;


3.每个进程的数据包括线程分析、内存分析、方法追踪,可通过点击tab分页进行切换;


4.线程分析的数据包含压测期间所有数据,操作步骤与前文中如何在压测中查看线程分析一致;


5.内存分析的数据包含压测期间所有数据,操作步骤与前文中如何在压测中查看内存分析一致;


6.方法追踪的数据包含压测期间所有开启过追踪的方法以及追踪过的深度,如果想查看对应的方法请先选择方法所在的应用与进程,再选择方法,点击搜索即可

6、中间件支持列表

中间件类型中间件名称相关jar包版本中间件名称中间件类型是否定制
http-clientokhttpokhttp-3.8.1.jar okhttphttp-client
okhttpokhttp-2.0.0.jar okhttphttp-client 
httpclienthttpclient-4.4.1.jar httpclienthttp-client 
httpclientcommons-httpclient-3.1.jar httpclienthttp-client 
RPC框架dubbodubbo-2.8.4.jar2.8.x,2.7.*.dubboRPC框架
持久层框架mybatismybatis-3.4.2.jar mybatis持久层框架
存储alihbasealihbase-client-2.0.3.jar alihbase存储
ossoss2.x 3.xoss存储 
定时任务saturnsaturn-core-3.5.0.jar saturn定时任务
2.1.xxx-job 2.1.x定时任务 
2.xelastic-job 2.x定时任务 
缓存jedisjedis-3.1.0.jar jedis缓存
lettucelettuce-core-5.1.4.RELEASE.jar lettuce缓存 
redisspring-boot-starter-data-redis-2.1.7.RELEASE.jar redis缓存 
jetcachejetcache-anno-2.6.0.M2.jar jetcache缓存 
jetcachejetcache-redis-2.6.0.M2.jar jetcache缓存 
连接池druid连接池druid-1.1.14.jar druid连接池连接池
HikariCP连接池HikariCP-3.1.0.jar3x,4xHikariCP连接池连接池 
容器jetty-serverjetty-server-9.2.11.v20150529.jar jetty-server容器
消息队列sf-kafkasf-kafka 1.7.3消息队列
数据源mysql    
oracle     
sqlserver     
文档更新时间: 2021-08-11 19:53   作者:admin