Sentinel 系统规则:全局视角的服务稳定性保障
Sentinel 系统规则从整体维度对应用进行流量控制,通过监控系统负载(Load)、CPU 使用率、平均响应时间(RT)等全局指标,平衡入口流量与系统承载能力,确保系统在最大化吞吐量的同时保持稳定。与流控、降级等针对具体资源的规则不同,系统规则是 “宏观调控”,保护整个应用的健康状态。
系统规则的设计理念
在分布式系统中,单个资源的限流或降级无法解决全局资源耗尽的问题(如 CPU 飙升、内存溢出)。系统规则基于 “漏斗模型”,将整个应用视为一个整体,通过以下思路实现保护:
- 监控系统核心指标(Load、CPU、RT 等),当指标超出安全范围时,限制所有入口流量;
- 避免 “局部最优” 导致 “全局崩溃”(如某个接口正常但整体 CPU 已达 90%);
- 让系统 “优雅降级”,在高负载时优先保障核心功能可用。
系统规则的阈值类型详解
Sentinel 系统规则支持五种阈值类型,覆盖不同的系统健康维度,可根据业务场景选择配置:
1. Load(系统负载,仅 Linux/Unix 生效)
核心逻辑:基于系统 1 分钟负载均值(load1)判断,当负载过高且并发线程数超过系统容量时,触发保护。
关键参数:
- 阈值:通常设置为
CPU核心数 * 2.5(如 4 核 CPU 设为 10); - 系统容量:由
maxQps * minRt计算(系统最大 QPS 与最小响应时间的乘积)。
触发条件(需同时满足):
- 系统 load1 > 配置阈值;
- 并发线程数 > 系统容量。
适用场景:
- 部署在 Linux 服务器上的应用;
- 对系统负载敏感的场景(如 CPU 密集型服务)。
2. CPU usage(CPU 使用率,1.5.0 + 支持)
核心逻辑:当系统 CPU 使用率超过阈值时,触发保护,限制所有入口流量。
关键参数:
- 阈值:取值范围 0.0~1.0(如 0.8 代表 80%)。
触发条件:
当前 CPU 使用率 > 配置阈值。
适用场景:
- CPU 密集型应用(如数据分析服务);
- 需严格控制 CPU 占用的场景(如多服务共享物理机)。
3. RT(平均响应时间)
核心逻辑:当应用所有入口流量的平均响应时间超过阈值时,触发保护,避免系统因处理缓慢导致请求堆积。
关键参数:
- 阈值:单位为毫秒(如 500ms)。
触发条件:
全量入口请求的平均 RT > 配置阈值。
适用场景:
- 响应时间敏感的应用(如实时交易系统);
- 避免因慢请求导致的线程池耗尽。
4. 线程数
核心逻辑:当应用所有入口流量的并发线程数超过阈值时,触发保护,防止线程资源耗尽。
关键参数:
- 阈值:允许的最大并发线程数(需根据线程池配置合理设置)。
触发条件:
全量入口请求的并发线程数 > 配置阈值。
适用场景:
- 线程资源有限的应用(如 Tomcat 线程池配置较小的服务);
- 避免因高并发导致的线程耗尽和 OOM。
5. 入口 QPS
核心逻辑:当应用所有入口流量的总 QPS 超过阈值时,触发保护,限制整体请求量。
关键参数:
- 阈值:全量入口的最大 QPS(如 1000)。
触发条件:
全量入口请求的总 QPS > 配置阈值。
适用场景:
- 需限制应用总流量的场景(如服务器带宽有限);
- 防止突发全量流量压垮应用(如全站促销活动)。
系统规则的配置(Dashboard 操作)
系统规则针对整个应用生效,配置步骤如下:
- 登录 Sentinel Dashboard,选择目标服务;
- 进入 “系统规则” 菜单,点击 “新增”;
- 选择阈值类型并配置参数(以 CPU 使用率为例):
- 阈值类型:CPU usage;
- 阈值:0.8(80%);
- 点击 “添加”,规则立即生效。
注意:系统规则全局唯一,一个应用只能配置一条系统规则(可包含多种阈值类型,但通常建议单一维度配置)。
系统保护的执行逻辑
当系统规则被触发时,Sentinel 会采取全局流量控制,具体表现为:
- 新的入口请求被拒绝(返回
Blocked by Sentinel (system limit)); - 已处理的请求不受影响,避免中断正在执行的业务;
- 规则持续监控系统指标,当指标恢复到安全范围时,自动解除保护。
最佳实践与注意事项
1. 阈值设置原则
- Load:参考
CPU核心数 * 2.5,避免设置过高导致系统无响应; - CPU usage:建议设置为 0.7~0.8(预留 20%~30% 资源应对波动);
- RT:基于 P99 或 P999 响应时间设置(如正常 RT 的 P99 为 300ms,阈值可设为 500ms);
- 线程数:不超过应用线程池最大线程数的 80%(如 Tomcat 最大线程 200,阈值设为 160);
- 入口 QPS:基于压测结果,略低于系统最大承载 QPS(如压测最大 1000QPS,阈值设为 800)。
2. 适用场景选择
- CPU 密集型服务:优先配置 “CPU usage” 或 “Load”;
- IO 密集型服务:优先配置 “RT” 或 “线程数”;
- 带宽受限服务:优先配置 “入口 QPS”。
3. 与其他规则的配合
系统规则是 “最后一道防线”,需与资源级规则(流控、降级)配合使用:
- 先用资源级规则限制单个接口的流量(如秒杀接口单独限流);
- 再用系统规则监控全局状态,防止资源级规则未覆盖的场景(如多个接口同时流量突增)。
总结
Sentinel 系统规则通过监控全局指标(Load、CPU、RT 等),实现了对应用的整体保护,避免因局部流量失控导致全局崩溃。其核心价值在于:
- 从宏观视角平衡流量与系统负载;
- 简化全局保护配置,无需为每个资源单独设置;
- 支持多种阈值类型,适配不同业务场景

v1.3.10