nginx限速控制解析

不点 阅读:391 2020-10-21 17:23:21 评论:0

nginx有两种限速控制,一种是控制请求或连接数,一种是通过发送字节控制速度

1.通过发送字节控制速度,限制带宽

Nginx 提供了limit_rate 和 limit_rate_after 详情查询nginx配置介绍

location /download/ {  
limit_rate_after 500k; 
limit_rate 50k;  
}

限流的核心代码

    chain = c->send_chain(c, ctx->out, 
                          clcf->limit_rate ? clcf->limit_rate: OFF_T_MAX_VALUE); 
 
    ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, 
                   "http write filter %X", chain); 
 
    if (clcf->limit_rate) { 
        sent = c->sent - sent; 
        c->write->delayed = 1; 
        ngx_add_timer(r->connection->write, 
                      (ngx_msec_t) (sent * 1000 / clcf->limit_rate)); 
    }

针对于限流的url,返回的时候 先发送一部分,比如50k/s,400k的数据,

sent * 1000 / clcf->limit_rate
这里sent是已发送大小,如果发送为50K,则定时器时间为1000ms,若小于50k为,则定时器为400ms,符合每秒限流50K的速度

2.通过请求连接数
采用漏桶算法,详见https://www.cnblogs.com/CarpenterLee/p/8084533.html

 

标签:nginx
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
排行榜
KIKK导航

KIKK导航

关注我们