# JMeter性能测试完整指南


<!--more-->


> 1. 安装 `JDK` 并配置环境变量，最好 `JDK 8` 以上。
> 2. 下载 `JMeter`

## 环境准备和启动

{{< link href="https://jmeter.apache.org/download_jmeter.cgi" content="下载 JMeter" >}}

{{< image src="/images/posts/JMeter性能测试完整指南/1.png" caption="(`图1`)" >}}

`Windows` 双击 `.bat` 运行

{{< image src="/images/posts/JMeter性能测试完整指南/2.png" caption="(`图2`)" >}}

切换语言为中文

{{< image src="/images/posts/JMeter性能测试完整指南/3.png" caption="(`图3`)" >}}

## 测试计划配置

### 添加线程组

1. 右键点击「测试计划」
2. 依次选择「添加」→「线程（用户）」
3. 点击「线程组」

{{< image src="/images/posts/JMeter性能测试完整指南/4.png" caption="(`图4`)" >}}


### 添加HTTP请求

1. 右键点击「线程组」
2. 依次选择「添加」→「取样器」
3. 点击「HTTP 请求」

{{< image src="/images/posts/JMeter性能测试完整指南/5.png" caption="(`图5`)" >}}


### 添加HTTP信息头管理器

1. 右键点击「线程组」
2. 依次选择「添加」→「配置元件」
3. 点击「HTTP 信息头管理器」

{{< image src="/images/posts/JMeter性能测试完整指南/6.png" caption="(`图6`)" >}}


### 添加HTTP请求默认值

1. 右键点击「线程组」
2. 依次选择「添加」→「配置元件」
3. 点击「HTTP 请求默认值」

{{< image src="/images/posts/JMeter性能测试完整指南/7.png" caption="(`图7`)" >}}


### 添加测试报告

1. 聚合报告：可实时显示请求的平均响应时间、中位数、90% 百分位响应时间、吞吐量等数据。
2. 图形结果：以图形化方式展示响应时间等数据变化情况。
3. 汇总报告
4. 查看结果树：以请求的方式展示接口是否响应成功。

{{< image src="/images/posts/JMeter性能测试完整指南/8.png" caption="(`图8`)" >}}


## 配置示例

以下是完整的测试计划配置示例，展示了如何设置一个典型的HTTP接口性能测试：

### 具体的配置参数设置

这些配置包括：
- **线程组参数**：设置并发用户数和循环次数
- **HTTP请求配置**：接口地址、请求方法、参数设置
- **响应断言**：验证接口返回结果的正确性
- **定时器设置**：控制请求发送的频率和时间间隔

{{< image src="/images/posts/JMeter性能测试完整指南/12.png" caption="(`图12`)" >}}

{{< image src="/images/posts/JMeter性能测试完整指南/9.png" caption="(`图9`)" >}}

{{< image src="/images/posts/JMeter性能测试完整指南/10.png" caption="(`图10`)" >}}

{{< image src="/images/posts/JMeter性能测试完整指南/11.png" caption="(`图11`)" >}}

## 生成 HTML 压测报告

选择报告保存的位置，因为 `JMeter` 没有配置环境变量，所以我们需要把这个文件放到 `JMeter` 的 `bin` 目录下去执行生成报告的命令。

### 报告生成步骤

1. **执行测试**：在JMeter中完成测试配置后，点击运行按钮开始压测
2. **保存测试结果**：测试完成后，将结果保存为`.jmx`文件
3. **生成HTML报告**：使用命令行工具生成可视化的HTML报告

{{< image src="/images/posts/JMeter性能测试完整指南/13.png" caption="(`图13`)" >}}

在 `bin` 目录下打开 `cmd`， 执行命令

``` shell {data-open=true}
jmeter -g 聊天接口结果数报告.jmx -o E:\software\apache-jmeter\bin\WebReport
```

### 报告内容解读

生成的HTML报告包含以下关键指标：

- **响应时间统计**：平均响应时间、中位数、90%和95%百分位响应时间
- **吞吐量数据**：每秒处理的请求数（Requests per Second）
- **错误率**：请求失败的比例和具体错误信息
- **并发性能**：系统在不同并发负载下的表现

会在 `E:\software\apache-jmeter\bin\WebReport` 下生成 `WebReport` 文件夹，文件夹中的 `index.html` 就是压测报告。

### 报告查看

{{< image src="/images/posts/JMeter性能测试完整指南/14.png" caption="(`图14`)" >}}

打开 `index.html` 文件，可以在浏览器中查看详细的性能分析报告，包含图表和统计数据。

### 报告示例

最终生成的报告界面如图15所示，提供完整的性能测试分析：

{{< image src="/images/posts/JMeter性能测试完整指南/15.png" caption="(`图15`)" >}}

## 最佳实践建议

### 压测注意事项

1. **环境隔离**：在测试环境进行压测，避免影响生产系统
2. **参数调优**：根据实际情况调整线程数、 ramp-up 时间和循环次数
3. **数据准备**：准备充足的测试数据，确保测试结果的准确性
4. **监控配合**：结合系统监控工具，观察服务器资源使用情况

### 性能调优建议

- **响应时间过长**：检查数据库查询、优化接口逻辑、增加缓存
- **吞吐量低**：分析系统瓶颈，可能是CPU、内存、网络或数据库问题
- **错误率过高**：检查接口稳定性、参数合法性、服务器资源不足

### 常见问题排查

- **连接超时**：检查网络连通性和服务器响应时间
- **内存溢出**：调整JMeter堆内存设置，优化测试脚本
- **结果不一致**：确保测试环境配置与生产环境一致
---
{.awesome-hr}

---

> 作者: [piliqiu](https://piliqiu.com/)  
> URL: https://piliqiu.com/posts/jmeter%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95%E5%AE%8C%E6%95%B4%E6%8C%87%E5%8D%97/  

