播放记录

nginx利用内置模块配置限速限流

博客术业专攻网站服务Nginxnginx利用内置模块配置限速限流 2019年08月29日 11:23:39

有时候NGINX面对一些特殊的场景时,需要进行一定的限速限流的配置,比如一个官网,可能前端静态文件是非常小的,但是同时配置的还有一些apk包,这些包如果不做任何限制,可能会形成比较大的负载或者带宽的压力,我这边碰到了,今天就来针对这个问题处理一下。

没有限制之前,对应的包下载速度如下:

添加如下配置,进行一定的限制:

http {
    ...#省略
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    ...#省略
}
server {
    listen 80 default;
    server_name localhost;

    location ~ "^/test/app/" {
         limit_conn addr 6;
        limit_rate_after 10m;
        limit_rate 1200k;
        limit_conn_status 499;
        limit_conn_log_level warn;
        root  /app;
    }
}

说明:

  • http区域,我这里使用的是1.15版本的,默认已经安装了对应的模块 ngx_http_limit_conn_module
    • limit_conn_zone:是一个固定的名称,下边调用的时候与之对应。
    • $binary_remote_addr:表示通过remote_addr这个标识来做限制,“binary_”的目的是缩写内存占用量,是限制同一客户端ip地址。
    • zone=addr:10m:示生成一个大小为10M,名字为addr的内存区域,用来存储访问的频次信息。
  • server区域,可以直接写在server区域内,表示限制所有,也可以写到对应的location当中,以表示单独区域限制。
    • limit_conn:表示单个IP限制最大连接数为6。
    • limit_rate_after:表示请求前 10m大小时不限速。
    • limit_rate:表示单个连接最大连接带宽限制为1200k。
    • limit_conn_status:设置拒绝请求的返回值。值只能设置 400 到 599 之间(默认是503)。
    • limit_conn_log_level:定义日志级别,默认error。

现在简单的做一下测试看看下载速度:

可以看到对应的速度已经收到限制,而且是在10M之后速度开始慢慢下降,直至达到限制的位置。现在可以简单压测看下情况:

$ ab -n 10 -c 10 http://www.test.com/res/app/app-xiaomi-release.apk

这条命令表示请求10次对应资源,并发为10。监控对应日志,看到如下结果,因为我们定义的最大并发是6,所以将会有4个失败,并返回499状态码,然后有6个成功。

$tailf -n 100 a |awk -F "," '{print  $6}'
"response": "499"
"response": "499"
"response": "499"
"response": "499"
"response": "200"
"response": "200"
"response": "200"
"response": "200"
"response": "200"
"response": "200"

另外在压测命令之后,还有一些输出可以参考:

Total transferred:      403483116 bytes
HTML transferred:       403481400 bytes
Requests per second:    0.18 [#/sec] (mean)
Time per request:       56865.501 [ms] (mean)
Time per request:       5686.550 [ms] (mean, across all concurrent requests)
Transfer rate:          6929.10 [Kbytes/sec] received

其他的不说了,只看最后一条,可以看到总的对外输出是大约7M/s,正好符合单条限制1.2M/s乘以6的数值。

另外还有其他一些相关限制配置,有需要另行研究:研究地址。


转载:http://www.eryajf.net/3133.html

© 2018 www.qingketang.net 鄂ICP备18027844号-1

武汉快勤科技有限公司 13554402156 武汉市东湖新技术开发区关山二路特一号国际企业中心6幢4层7号

微信登录

扫码关注,全站教程免费播放

发表评论 X

登录成功
开通VIP

订单金额:

支付金额:

支付方式: