测试环境信息
服务器配置
| 测试环境 | CPU | 内存 |
|---|---|---|
| 部署在Kubesphere | 2 | 4G |
测试工具
| 序号 | 测试工具名称 | 环境准备情况及要求 | |
|---|---|---|---|
| 1 | Jmeter | 本地运行 |
测试用例
CASE 1 关于 Sentinel DashBoard 基本使用
-
实时监控
监控请求实时情况,若无请求打入时, dashboard 为空白.
-
请求链路
实时的链路请求规则监控.
-
API 管理
网关服务自定义 API 管理规则
-
流控规则
- QPS
- 线程数
-
降级规则
-
系统规则
-
机器列表
CASE 2 流控 阈值类型 QPS/快速失败
-
QPS 值 20 流控策略为 快速失败 间隔数 1s
-
请求地址
POST /property/find/page/list
参数: {"currPageNo":"1","currPageSize":"10"}
-
Jmeter 参数设置
线程数 40, ram-up 1s, 即 1s 内发起 40个 请求
-
测试结果
Jmeter 结果返回
50% 的请求 返回 429 Blocked By Sentinel
-
DashBoard 监控图
CASE 3 流控 阈值类型 QPS/匀速排队
-
QPS 值 20 流控策略为 匀速排队 间隔数 1s 排队超时时间 500ms
-
请求地址
POST /property/find/page/list
参数: {"currPageNo":"1","currPageSize":"10"}
-
Jmeter 参数设置
线程数 40, ram-up 1s, 即 1s 内发起 40个 请求
-
测试结果
Jmeter 结果返回
结果均正常返回 响应时间被拉长
-
DashBorad 监控图
CASE 4 流控 阈值类型 线程数 20 并发数 40
-
设置规则线程数为 20
-
Jmeter 线程数 40, ram-up 1s, 即 1s 内发起 40个 请求
-
请求地址 权限中心测试环境
-
API 1 POST/property/find/page/list
-
参数 {"currPageNo":"1","currPageSize":"10"}
-
Jmeter 请求结果
-
DashBoard 响应
-
-
API 2 GET /check/select/query?userName=xxxxx
-
参数 requestParam userName
-
Jmeter 请求结果
-
DashBoard 响应
-
-
-
结论
-
指定线程数来进行网关流控, 与实际流控 API 响应时间明显相关 应用方需要注意.
-
采用 API 进行 流控
CASE 5 流控 阈值类型 线程数 10 并发数 200
**规则 线程数 设置为 10 **
-
Jmeter 参数设置
线程数 200, ram-up 1s, 即 1s 内发起 200个 请求
-
请求地址
GET /check/select/query?userName=xxxxx
-
测试结果
-
DashBoard 监控
规则线程数 设置为 14
-
Jmeter 参数设置
线程数 200, ram-up 1s, 即 1s 内发起 200个 请求
-
请求地址 权限中心测试环境
GET /check/select/query?userName=xxxxx
-
测试结果
-
DashBoard 监控
测试结论
测试结果汇总
| 限流规则 | API 接口 | Jmeter 中请求 | Sentine 阈值 | 响应时间 | 通过率 |
|---|---|---|---|---|---|
| QPS/快速失败 | /property/find/page/list | 20QPS | 20 QPS | 0.5-1s | 100% |
| QPS/快速失败 | /property/find/page/list | 40QPS | 20 QPS | 0.5-1s | 50% |
| QPS/匀速排队 | /property/find/page/list | 40QPS | 20QP/超时 500ms | 1-3s | 100% |
| API 线程数 | /check/select/query | 200 并发数 | 线程 10 | 30-100ms | 91.5% |
| API 线程数 | /check/select/query | 200 并发数 | 线程 14 | 30-100ms | 100% |
| API 线程数 | /property/find/page/list | 40 并发数 | 线程 20 | 1-2s | 50% |
| API 线程数 | /property/find/page/list | 40 并发数 | 线程 40 | 1-3s | 100% |
总结
- 基于 QPS 的阈值类型 (快速失败和匀速排队)依据设置的 QPS 的配置,限流规则准确有效。
- 基于线程的阈值类型,根据测试结果,线程的设置和接口的响应时间和并发请求个数有一定的关联。 根据对不同的 API 测试,
- 使用 Sentinel 流规则,功能完整有效。