# DevOps案例 **Repository Path**: cometo/dev-ops-case-study ## Basic Information - **Project Name**: DevOps案例 - **Description**: 5月14号老师作业要求 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-14 - **Last Updated**: 2026-05-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JMeter性能测试目标服务 这是一个专门为 **JMeter 性能测试学习** 而设计的 Java Spring Boot 项目。 ## 功能特性 ### 核心接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/user/login` | POST | 用户登录(返回Token) | | `/api/user/info` | GET | 查询个人信息(需Token) | | `/api/demo/normal` | GET | 正常快速接口(基准测试) | | `/api/demo/slow?delay=500` | GET | 慢接口(模拟延迟) | | `/api/demo/cpu?iterations=10000` | GET | CPU密集型接口 | | `/api/demo/memory?sizeKB=1024` | GET | 内存占用接口 | | `/api/demo/data/{id}` | GET | 数据查询接口 | | `/api/demo/data/list?page=1&size=20` | GET | 数据分页查询 | | `/api/demo/data` | POST | 数据创建接口 | ## 快速开始 ### 1. 环境要求 - **JDK**: 1.8 或以上版本 - **Maven**: 3.6+ ### 2. 打包项目 ```bash cd PerformanceTest # 使用Maven打包 mvn clean package -DskipTests # 生成的jar文件在: target/performance-test-server.jar ``` ### 3. 启动服务 ```bash # 方式一:直接运行jar包 java -jar target/performance-test-server.jar # 方式二:指定配置文件启动 java -jar target/performance-test-server.jar --server.port=8080 ``` 服务启动后访问: http://localhost:8080 ### 4. 测试登录接口 使用 Postman 或 curl 测试: ```bash # 登录请求 curl -X POST http://localhost:8080/api/user/login \ -H "Content-Type: application/json" \ -d '{"username":"test1","password":"123456"}' ``` **响应示例:** ```json { "code": 0, "msg": "登录成功", "data": { "userId": 1234, "username": "test1", "token": "eyJhbGciOiJIUzI1NiJ9..." } } ``` ```bash # 使用返回的Token查询个人信息 curl -X GET http://localhost:8080/api/user/info \ -H "Authorization: Bearer <上面返回的token>" ``` ## JMeter 压测场景 ### 场景1: HTTP协议登录+查询脚本开发 对应学习笔记「二、性能测试脚本开发」 **步骤:** 1. 创建线程组:线程数10,Ramp-Up时间5秒,循环次数2次 2. 添加HTTP信息头管理器:Content-Type: application/json 3. 添加CSV Data Set Config: - 文件名:user.csv(已提供) - 变量名称:username - 编码:UTF-8 4. 添加HTTP请求(登录): - POST /api/user/login - Body:`{"username":"${username}","password":"123456"}` 5. 添加JSON提取器: - 引用名:token - JSON Path:$.data.token 6. 添加HTTP请求(查询): - GET /api/user/info - Header:Authorization: Bearer ${token} 7. 添加断言和监听器 ### 场景2: 阶梯负载压测 对应学习笔记「三、性能测试负载与监听」 **目标:** 对 `/api/demo/slow?delay=100` 进行阶梯加压 **配置:** - 初始线程:10 - 每30秒增加:10个线程 - 最大线程数:100 - 持续运行时间:10分钟 **监控指标:** - 平均响应时间 < 500ms - 错误率 < 0.1% - CPU < 80% ### 场景3: 不同类型接口对比压测 | 接口类型 | 用途 | 监控重点 | |---------|------|---------| | /api/demo/normal | 基准线 | 最小响应时间 | | /api/demo/slow | 延迟测试 | 响应时间分布 | | /api/demo/cpu | CPU压力 | CPU利用率 | | /api/demo/memory | 内存压力 | JVM内存、GC频率 | ## 注意事项 1. **默认密码**: 所有测试账号密码均为 `123456` 2. **端口冲突**: 如果8080被占用,可修改 `application.yml` 或启动参数指定其他端口 3. **数据持久化**: 本项目使用内存存储,重启后数据会丢失 4. **生产环境**: 此项目仅用于学习和测试,请勿用于生产环境 ## 项目结构 ``` PerformanceTest/ ├── pom.xml # Maven配置文件 ├── user.csv # JMeter参数化用户数据 ├── README.md # 说明文档 └── src/ └── main/ ├── java/com/example/perftest/ │ ├── PerformanceTestApplication.java # 主启动类 │ ├── common/ │ │ └── Result.java # 统一响应类 │ ├── config/ │ │ └── WebConfig.java # Web配置(拦截器) │ ├── controller/ │ │ ├── UserController.java # 用户接口 │ │ └── DemoController.java # 压测演示接口 │ ├── entity/ │ │ ├── User.java # 用户实体 │ │ └── LoginData.java # 登录响应 │ ├── interceptor/ │ │ └── JwtInterceptor.java # JWT拦截器 │ └── util/ │ └── JwtUtil.java # JWT工具类 └── resources/ └── application.yml # 配置文件 ```