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

首頁 > 網站 > Nginx > 正文

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

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

通過查看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(這里只是假設)

注:還有很重要的幾點。max_conns是針對upstream中的單臺server的,不是所有;nginx有個參數:worker_processes,max_conns是針對每個worker_processes的;

附ab工具安裝步驟(轉載,來源未知)

#ab運行需要依賴apr-util包,安裝命令為: yum install apr-util #安裝依賴 yum-utils中的yumdownload 工具,如果沒有找到 yumdownload 命令可以 yum install yum-utils cd /opt mkdir abtmp cd abtmp yum install yum-utils.noarch yumdownloader httpd-tools* rpm2cpio httpd-*.rpm | cpio -idmv #操作完成后 將會產生一個 usr 目錄 ab文件就在這個usr 目錄中 #簡單使用說明 ./ab -c 100 -n 10000 http://127.0.0.1/index.html #-c 100 即:每次并發100個 #-n 10000 即: 共發送10000個請求 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赫章县| 义乌市| 陆川县| 海晏县| 正镶白旗| 吉水县| 中卫市| 新安县| 富裕县| 全州县| 久治县| 吉木萨尔县| 左权县| 罗源县| 乐陵市| 嘉峪关市| 黄大仙区| 虞城县| 兰西县| 灵武市| 平南县| 延庆县| 中江县| 保德县| 西平县| 威信县| 达日县| 横山县| 陈巴尔虎旗| 洞口县| 黑水县| 织金县| 通山县| 隆回县| 陈巴尔虎旗| 玉门市| 安丘市| 贵港市| 石门县| 枝江市| 姜堰市|