国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Nginx > 正文

nginx限流方案的實現(三種方式)

2024-08-30 12:25:03
字體:
來源:轉載
供稿:網友

通過查看nginx官方文檔,小弟查看到了三種nginx限流方式。

1、limit_conn_zone

2、limit_req_zone

3、ngx_http_upstream_module

前兩種只能對客戶端(即單一ip限流),并且文檔也很全,但是經過測試發現,還是無法達到官方文檔所說的結果(可能小弟的測試方法有問題)。

這里先簡單的介紹一下前兩種:

1、limit_conn_zone

1.1nginx配置

http{  limit_conn_zone $binary_remote_addr zone=one:10m;  server  {    ......   limit_conn one 10;   ......  } } 

其中“limit_conn one 10”既可以放在server層對整個server有效,也可以放在location中只對單獨的location有效。
該配置表明:客戶端的并發連接數只能是10個。

1.2結果

ab工具20并發去請求nginx,可以看到
Complete requests: 20
Failed requests: 9

(由于nginx配置中一個ip并發連接數為10,而結果中成功數為+1的原因未知;nginx的日志中也可以看到有9個請求返回503)

2、limit_req_zone

2.1 nginx配置

http{  limit_req_zone $binary_remote_addr zone=req_one:10m rate=1r/s;  server  {    ......   limit_req zone=req_one burst=120;   ......  } } 

其中“limit_req zone=req_one burst=120”既可以放在server層對整個server有效,也可以放在location中只對單獨的location有效。

rate=1r/s的意思是每個地址每秒只能請求一次,也就是說令牌桶burst=120一共有120塊令牌,并且每秒鐘只新增1塊令牌,120塊令牌發完后,多出來的請求就會返回503.。

3、ngx_http_upstream_module

3.1 介紹

作為優秀的負載均衡模塊,目前是我工作中用到最多的。其實,該模塊是提供了我們需要的后端限流功能的。通過官方文檔介紹,該模塊有一個參數:max_conns可以對服務端進行限流,可惜在商業版nginx中才能使用。然而,在nginx1.11.5版本以后,官方已經將該參數從商業版中脫離出來了,也就是說只要我們將生產上廣泛使用的nginx1.9.12版本和1.10版本升級即可使用(通過測試可以看到,在舊版本的nginx中,如果加上該參數,nginx服務是無法啟動的)。

3.2配置

upstream xxxx{   server 127.0.0.1:8080 max_conns=10;   server 127.0.0.1:8081 max_conns=10;  } 

3.3結果(不便截圖)

用兩臺機器各自用ab工具向nginx發送20、30、40個并發請求:

可以看到無論并發多少,成功的請求只有12個,成功的次數會多個2個,同時1.2的測試結果中成功次數也是+1,這里是兩臺機器,基于此種考慮,將機器增加至三臺,果然成功的次數為13個。這里得出一個假想,成功的請求數會根據客戶端的+1而+1(這里只是假設)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武冈市| 栾城县| 安溪县| 潞西市| 合阳县| 安乡县| 富阳市| 安龙县| 宝兴县| 三台县| 五华县| 台前县| 会昌县| 陵川县| 榕江县| 清苑县| 哈巴河县| 东阿县| 镇赉县| 会宁县| 丰都县| 河东区| 鄂伦春自治旗| 嘉定区| 略阳县| 务川| 南和县| 永清县| 手游| 巩留县| 共和县| 通海县| 蓝山县| 林口县| 安西县| 铁岭市| 北辰区| 台南市| 深泽县| 兴仁县| 阳谷县|