SpringCloud Gateway 集成 Sentinel 功能测试报告

2,197 阅读3分钟

测试环境信息

服务器配置

测试环境CPU内存
部署在Kubesphere24G

测试工具

序号测试工具名称环境准备情况及要求
1Jmeter本地运行

测试用例

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/list20QPS20 QPS0.5-1s100%
QPS/快速失败/property/find/page/list40QPS20 QPS0.5-1s50%
QPS/匀速排队/property/find/page/list40QPS20QP/超时 500ms1-3s100%
API 线程数/check/select/query200 并发数线程 1030-100ms91.5%
API 线程数/check/select/query200 并发数线程 1430-100ms100%
API 线程数/property/find/page/list40 并发数线程 201-2s50%
API 线程数/property/find/page/list40 并发数线程 401-3s100%

总结

  • 基于 QPS 的阈值类型 (快速失败和匀速排队)依据设置的 QPS 的配置,限流规则准确有效。
  • 基于线程的阈值类型,根据测试结果,线程的设置和接口的响应时间和并发请求个数有一定的关联。 根据对不同的 API 测试,
  • 使用 Sentinel 流规则,功能完整有效。