zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    股票F10
    什么是盘口?
    CompletionPort
    WSAEvent
    SO_KEEPALIVE选项
    SO_LINGER
    shutdown和close的区别
    TIME_WAIT和CLOSE_WAIT状态区别
    什么是2MSL
    WSAStartup function
  • 原文地址:https://www.cnblogs.com/wangshaowei/p/12887150.html
Copyright © 2011-2022 走看看