nginx限速控制

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

 

原文链接: https://www.cnblogs.com/wangshaowei/p/12887150.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    nginx限速控制

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/391201

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月31日 上午10:29
下一篇 2023年3月31日 上午10:29

相关推荐