Skip to content

qiulaidongfeng/limit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Limit

一个自适应限流器

实现原理

实现是用一个动态的处理窗口,先用大窗口,最大限度利用服务器, 基于CPU使用率和剩余内存,判断是否接近最大处理能力, 快用完处理能力时快速缩小处理窗口,通过拒绝少部分过量请求,确保大多数请求成功处理。 和滑动窗口等其他限流算法比,好处在不限制每秒处理请求,能更大限度利用服务器.

目前实现

默认限制,同时最多处理300*runtime.GOMAXPROCS(0)个请求

基于CPU使用率

  • 大于85,同时最多处理10*runtime.GOMAXPROCS(0)个请求
  • 大于75,同时最多处理32*runtime.GOMAXPROCS(0)个请求
  • 大于65,同时最多处理64*runtime.GOMAXPROCS(0)个请求

基于剩余内存

  • 小于50Mb,同时最多处理10*runtime.GOMAXPROCS(0)个请求
  • 小于100Mb,同时最多处理32*runtime.GOMAXPROCS(0)个请求
  • 小于150Mb,同时最多处理64*runtime.GOMAXPROCS(0)个请求

所有限制中,选择最低的。

About

一个自适应限流器

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages