Chinaunix首页 | 论坛 | 博客
  • 博客访问: 471678
  • 博文数量: 145
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1139
  • 用 户 组: 普通用户
  • 注册时间: 2014-01-14 16:47
个人简介

路漫漫其修远兮,吾将上下而求索

文章分类

全部博文(145)

文章存档

2016年(10)

2015年(15)

2014年(120)

我的朋友

分类: LINUX

2014-01-15 11:56:21

nginx做下载服务器,在性能上满足需求。自带limit模块可以做限速和限制并发数,无需再另外编译安装。我们的下载的压力主要在带宽这块。
现在多线程的下载工具太多,为了保证带宽的使用。特做了单IP并发连接数并限制下载速度。可以根据实际环境来调节。
先定义一个“limit”的记录区
limit_zone limit $binary_remote_addr 10m;
       
location /dl/ {
    limit_conn limit 8;       ###并发数
    limit_rate 100k;         ###单个线程最大下载速度,单位KB/s
    }


=============================================
示例:
limit_zone one $binary_remote_addr 32k;
server {
listen       80;
server_name  192.168.1.222;
location / {
root   /var/www/html;
index  index.html index.htm index.php;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
limit_conn one 2;
limit_rate 10k;
}
=========================================
限速处理
限速使用 limit_zone, limit_conn 以及 limit_rate 进行配置
首先在 http 段配置一个 limit_zone,然后在需要的地方使用 limit_conn 和 limit_rate 进行限速设置,如下一个简单的例子
http {
  limit_zone   one  $binary_remote_addr  10m;
  server {
    location /files/ {
      limit_conn   one  1;
      limit_rate 20k;
    }
  }
}
说明:
limit_zone,是针对每个IP定义一个存储session状态的容器。这个示例中定义了一个名叫one的10m大小的容器,这个名字会在后面的limit_conn中使用。
limit_conn one 1;
限制在one中记录状态的每个IP只能发起一个并发连接。
limit_rate 20k;
对每个连接限速20k. 注意,这里是对连接限速,而不是对IP限速。如果一个IP允许三个并发连接,那么这个IP就是限速为limit_rate×3,在设置的时候要根据自己的需要做设置调整,要不然会达不到自己希望的目的。
 


说明:
limit_zone,针对每个IP定义一个存储session状态的容器。要求大于等于32K。
limit_conn,限制每个IP发起的连接数,比如本实例设了2个,当我用IE进行单线程下载的时候还可以打开该站点的一个网页。而用迅雷下载时,迅雷会启用2个线程下载,所以当再去打开网页的时候,服务器端会返回错误请求。该值建议设置得高一些,比如15左右。
limit_rate,限制每个连接速度为10K,此限制是针对单个线程,比如这个例子,我用IE下载是10K,当用迅雷时它会占用2个线程,所以迅雷下载速度为20K,此实例也很好的解释了迅雷下载速度快的原因。
 
阅读(2407) | 评论(0) | 转发(0) |
1

上一篇:升级Linux的OpenSSL

下一篇:nagios监控

给主人留下些什么吧!~~