Skywalking服务链路追踪与Jemeter压力测试

张开发
2026/4/10 13:12:16 15 分钟阅读

分享文章

Skywalking服务链路追踪与Jemeter压力测试
一、下载所需软件本文基于SkyWalking 9.6.0实现微服务全链路监控并使用JMeter完成接口压测与性能验证SkyWalking官网Downloads | Apache SkyWalkingSkyWalking华为镜像https://mirrors.huaweicloud.com/apache/skywalking/9.6.0/apache-skywalking-apm-9.6.0.tar.gz下载skywalking9.6.0版本与Agents9.6.0版本、jmeter5.6.3版本二、SkyWalking APM2.1 jdk版本针对自己情况解压到本地后由于skywalking该版本只适配JDK 11 或 JDK 17如果本地jdk不是对应版本也无需修改环境变量只需下载jdk文件解压到目录直接修改 SkyWalking 启动脚本强制指定用 JDK 17所在文件夹启动修改skywalking-9.6.0/bin/oapService.batecho off set JAVA_HOMEC:\jdk\jdk17 加入这一行位置是对应的jdk位置 setlocal ...同样给webappService.bat也在同样位置加一行2.2修改端口通用由于SkyWalking的默认启动端口与Nacos冲突都是8080所以我们修改他的默认端口再打开skywalking-9.6.0/webapp/application.yml修改端口为serverPort: ${SW_SERVER_PORT:-18080} 加入一个12.3启动启动就是先启动oapService.bat再启动webappService.bat前一个是后端后一个是前端只有都启动并不报错才能在本地localhost:18080网址访问到可视化界面。二、Agent2.1准备Agent是监控只有监控各个微服务启动情况才能让skywalking进行链路监控与后续数据汇总把你下载的 agent 解压好里面必须有skywalking-agent.jar config/agent.config2.2导入项目打开 IDEA → 编辑启动配置 → VM options给你的微服务启动参数加上这三句修改两个地方↓-javaagent:C:\Environment\skywalking-agent\skywalking-agent.jar 修改为自己agent位置 -Dskywalking.agent.service_nameuser-service 这里要改成微服务名字 -Dskywalking.collector.backend_service127.0.0.1:118002.3完成当完成上述操作后启动微服务程序并且手动点击测试项目功能即可在localhost:18080中看到链路追踪里面有很多形式的链路追踪可以分析到一个功能调用了什么微服务自己探索吧。下面的Jmter主要是对系统进行压力测试的就是在1min或者1s内测试系统可以处理多少请求✅ 服务列表里出现user-service✅ 拓扑图自动画出服务调用关系✅ 追踪里能看到完整调用链✅ 能看到响应时间、QPS、异常率这就是链路追踪 微服务监控。Agent不需要启动它不是独立程序可以理解为一段配置是 以Java 探针形式挂载于微服务进程之上三、⭐JMeter 接口测试3.1准备与了解1.安装下载jemeter5.6.3安装包解压新增系统变量汉化进入bin/jmeter.properties将languageen改为languagezh_CN进入 JMeter 的bin目录双击jmeter.bat后出现 JMeter 图形界面2.教程1是对测试配置文件的管理2是对左侧组件的管理3是对实现测试管理4是辅助功能的管理3.2核心组件必需参考视频1小时快速入门jmeter接口测试和jmeter性能测试教程视频不错推荐看测试计划 (Test Plan)概念是所有测试元素的顶级容器线程组 (Thread Group)概念模拟虚拟用户决定了用户总数线程数、完成的时间、测试循环执行次数链路追踪 线程 1负载均衡测试 线程 100/200/500/1000压力测试 / 性能测试 线程逐步往上加看 TPS、RT、错误率特点所有取样器必须置于线程组之下取样器 (Sampler)概念模拟用户的具体动作即测试步骤通常是向服务器发送请求。有多种类型其中最常用的是 HTTP 取样器特点是大部分非核心组件的服务对象3.2辅助组件监听器 (Listener)展示取样器工作细节和结果配置元件 (Config Element)配置修改取样器的设置定时器 (Timer)延迟取样器的执行断言 (Assertion)判断取样器的的结果前置处理器 (Pre-Processor)取样器之前自动执行后置处理器 (Post-Processor)取样器之后自动执行逻辑控制器 (Logic Controller)对取样器进行逻辑控制条件、分支、循环、跳过3.3实战测试登陆端口访问http://localhost:9000/login是登录窗口1、首先创建线程组三个属性都填1表示只测试一次2、创建HTTP信息头管理器确保发送的json数据格式正确名称值Content-Typeapplication/json;charsetUTF-83、创建HTTP请求填写对应参数4、创建取样器-选择查看结果树准备完毕点击运行3.4结果分析图标色默认由网络状态 响应码决定2xx 绿4xx/5xx 红如果添加了断言断言结果会覆盖默认规则断言失败则标红无论响应码是什么取样结果(Sampler result)提供了响应码、响应时间、内容长度等概要信息什么是请求头Request Headers可以理解成快递包裹外面的标签和说明。告诉服务器 “这次请求的基本信息”不包含业务数据。什么是请求体Request Body就是包裹里面真正的货物。Get方法一般没有内容通常是账号密码表单数据JSON 格式数据作用传递真正要传给后端的业务数据。四、JMeter--Http核心配置4.1HTTP信息头管理器Content-Type定义了请求体Body的数据格式。这是 POST 或 PUT 请求中至关重要的头信息。application/json表示请求体是 JSON 格式。application/x-www-form-urlencoded表示请求体是标准的表单提交格式。一定要放在各自的http请求下不要放在总线程下不然格式不同时不能共用就会容易出错。其他...4.2HTTP Cookie管理器1、概述当用户首次登录成功后服务器会生成一个唯一的身份标识Session ID并通过响应头Set-Cookie发送给客户端客户端如浏览器会存储这个 Cookie。在后续的请求中客户端会自动携带此 Cookie服务器据此便能识别出是哪位用户从而维持了用户的登录状态这个过程称为会话 (Session)。2、JMeter 中管理 Cookie在线程组下右键点击 - 添加 - 配置元件 -HTTP Cookie 管理器。HTTP Cookie 管理器 会自动完成会话保持无需手动处理。4.3HTTP请求默认值当添加 HTTP请求默认值后取样器中对应的字段为空时将自动使用 “HTTP 请求默认值” 中定义的值4.4⭐接口关联上一个接口的返回结果给下一个接口当参数用常见的需要关联的数据会话令牌 (Session Token / JWT Token)如token,access_token业务单据 ID如orderId,userId,productId这个很重要但视频到此结束了我也没看懂。

更多文章