QPS限流如何设置阈值比较合理
发布于 3 年前 作者 LiuWeiMr 4963 次浏览 来自 问答

限流配置中,阈值其实是很难准确并恰当的设置的。 我理解的配置原则:

  1. 不能影响正常流量
  2. 能起到限流作用,保护服务

现状却是阈值真的很难配置,已经用了很多脑细胞, 说下我的配置理解:

  1. 服务会提供多个接口,多个接口在线上有多种请求组合,用户的使用方式无法精确预判,所以,没法以固定情景确定每个接口的阈值
  2. 针对单个接口压测得到每个接口QPS上限,能做到不误杀的配置是,针对每个接口配置阈值,分别是接口QPS上限,但是这样大概率会不起作用,无法真的保护服务。
  3. 按80%比例配置阈值,可能会误杀正常流量。 各位有好的方案配置阈值嘛?
2 回复

看你的目的是为了

  • 防攻击: 更精确识别恶意请求, 放弃服务可能会被流量拖垮, 即使流量是正常用户产生的流量
  • 保证服务稳定: 确保未限流用户可正常访问, 放弃限流用户, 即使限流用户可能是正常用户

这2个目的存在些许冲突, 实践中可能两个都用, 工作在不同的层面, 并且有不同的策略和阈值

  • 防攻击 防爬虫 防dos

    • 持续增强恶意请求的识别能力, 或者反向识别正常用户
    • 比如每小时超过n次请求的用户, 自动化的办法是找能覆盖99%用户的请求量
    • 异常用户需要给展示人机识别
  • 保证服务稳定

    • 需要引入服务负载指标, 到达临界前一些, 就需要限流用户
    • 注意是用户, 不是请求, 已有用户离开后, 才能接受新用户
    • 限流用户需要展示排队界面
    • 考虑全链路是否能上弹性计算

@netwjx 感谢用心的解答,不过和我的问题对不上,我问的很具体了,限流的目的我是知道的,问题是阈值如何设置合理,希望能集思广益讨论下,我也查阅了很多资料,并没有一个合理的方案

回到顶部