SpringCloudGateway集成Sentine

测试环境信息

服务器配置

测试环境 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 流规则,功能完整有效。