一、下载所需软件
本文基于 SkyWalking 9.6.0 实现微服务全链路监控,并使用 JMeter 完成接口压测与性能验证
SkyWalking官网:Downloads | Apache SkyWalking
SkyWalking华为镜像: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 APM
2.1 jdk版本(针对自己情况)
解压到本地后,由于skywalking该版本只适配JDK 11 或 JDK 17
如果本地jdk不是对应版本,也无需修改环境变量,只需下载jdk文件解压到目录,直接修改 SkyWalking 启动脚本,强制指定用 JDK 17所在文件夹启动
修改skywalking-9.6.0/bin/oapService.bat
@echo off
set JAVA_HOME=C:\jdk\jdk17 <<<< 加入这一行!位置是对应的jdk位置
setlocal
...
同样给 webappService.bat 也在同样位置加一行
2.2修改端口(通用)
由于SkyWalking的默认启动端口与Nacos冲突,都是8080,所以我们修改他的默认端口
再打开skywalking-9.6.0/webapp/application.yml
修改端口为
serverPort: ${SW_SERVER_PORT:-18080} <<<< 加入一个1
2.3启动
启动就是先启动oapService.bat ,再启动 webappService.bat
前一个是后端,后一个是前端,只有都启动并不报错才能在本地localhost:18080网址访问到可视化界面。
二、Agent
2.1准备
Agent是监控,只有监控各个微服务启动情况,才能让skywalking进行链路监控与后续数据汇总
把你下载的 agent 解压好,里面必须有:
skywalking-agent.jar
config/agent.config
2.2导入项目
打开 IDEA → 编辑启动配置 → VM options:
给你的微服务启动参数加上这三句(修改两个地方)↓
-javaagent:C:\Environment\skywalking-agent\skywalking-agent.jar <<<<修改为自己agent位置
-Dskywalking.agent.service_name=user-service <<<<这里要改成微服务名字
-Dskywalking.collector.backend_service=127.0.0.1:11800
2.3完成
当完成上述操作后,启动微服务程序并且手动点击测试项目功能,即可在localhost:18080中看到链路追踪,里面有很多形式的链路追踪,可以分析到一个功能调用了什么微服务,自己探索吧。下面的Jmter主要是对系统进行压力测试的,就是在1min或者1s内测试系统可以处理多少请求
✅ 服务列表里出现 user-service
✅ 拓扑图自动画出服务调用关系
✅ 追踪里能看到完整调用链
✅ 能看到响应时间、QPS、异常率
这就是链路追踪 + 微服务监控。
(Agent不需要启动,它不是独立程序,可以理解为一段配置,是 以Java 探针形式挂载于微服务进程之上)
三、⭐JMeter 接口测试
3.1准备与了解
1.安装
下载jemeter5.6.3安装包,解压,新增系统变量

汉化:进入 bin/jmeter.properties,将 language=en 改为 language=zh_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-Type | application/json;charset=UTF-8 |
3、创建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
这个很重要,但视频到此结束了,我也没看懂。