摘要:在生產(chǎn)環(huán)境中,建議不要使用連接數(shù)限制單個連接的帶寬限制不易過低像迅雷這種下載器的限速,可能需要別的辦法注文中部分內(nèi)容參考自關(guān)于的限速模塊
nginx 限速研究匯報 寫在前面
? ? ? ?這兩天服務(wù)器帶寬爆了,情況如下圖:
出于降低帶寬峰值的原因,我開始各種瘋狂的研究nginx限速。下面是我研究過程中的心得!(花了好幾個小時的時間寫的人生第一篇技術(shù)類網(wǎng)文)
限速的方案:
聲明:
連接數(shù):單個ip的請求數(shù)
nginx限速的實現(xiàn)原理:
? ? ? ?通過控制單個連接的下載帶寬和控制連接數(shù)來實現(xiàn)。
? ? ? ?首先限制單個連接的帶寬,然后限制連接數(shù)。如果要實現(xiàn)限速,限制單個連接帶寬是必須的,限制連接數(shù)是非必須的。
? ? ? ?在實際情況中,我們可能出于單個IP會存在大量連接數(shù)的情況而不去限制連接數(shù)。
? ? ? ?比如:公司用的是專線,全公司的人用的是同一個IP,如果你限制連接數(shù)為5,下載器默認(rèn)連接數(shù)為5,那么就只能供一個人下載,而別的人訪問都是503。還有很多情況,都不允許我們?nèi)ハ拗七B接數(shù),所以,我們只能限制單個連接的帶寬。
? ? ? ?在限制單個連接帶寬時要注意,有一些下載器使用的是單鏈接,你不能將單個連接的帶寬限制的太小。
? ? ? ?比如nginx限速配置如下:
http { limit_conn_zone $binary_remote_addr zone=addr:10m; #實例化nginx對象(哈哈,這樣理解美滋滋) server { listen 80; server_name xx.com; access_log xx.log main; error_log xx.log; root xx; index index.html; limit_conn perip 5; #調(diào)用nginx對象屬性并賦值 limit_rate 20k; #調(diào)用nginx對象屬性并賦值 #上面這兩個limit的意思是:單個IP最大允許5個連接,單個連接帶寬為20K,若下載器一次可以發(fā)起5個請求(5個連接數(shù)),那么這個下載器最大下載速度為100K; } }
? ? ? ?限速效果圖:
google 下載情況:
360 下載情況:
迅雷下載情況:
? ? ? ?對比發(fā)現(xiàn):nginx限速對瀏覽器自帶的下載器來說,都可以限制,但是唯獨下載軟件(如:迅雷)不受限制。(畢竟人家就是靠這個吃飯的)。當(dāng)然你也可以連開多個下載任務(wù),測試一下連接數(shù)限制,如果你設(shè)置了連接數(shù)為5,你可以最多在瀏覽器打開5個下載,下載軟件(如:迅雷)中可能只能打開一個下載任務(wù)(因為他會打開很多連接,已經(jīng)超過了你設(shè)置的5個連接數(shù))。如果超過的話,下面我們說的連接數(shù)限制中的兩個方法返回的結(jié)果略有不同:
方法1. 會將超出的請求放入burst隊列中,隊列的長度取決于你設(shè)置的burst值,一個一個處理,超過隊列長度的返回503。 方法2. 直接返回503。
如何控制這兩個量(單個連接數(shù)的下載速度, 連接數(shù))
在http中添加的都像是實例化一個nginx對象,并給nginx對象賦初值,在server中的配置就像是調(diào)用這個nginx類的屬性(個人理解)
連接數(shù)控制
第一種方式:
首先在http下添加:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
然后在server中添加:
limit_req zone=one burst=5 nodelay;
示例一
http { limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; ... server { ... location /download/ { limit_req zone=one burst=5 nodelay; #nodelay 的大概意思是告訴nginx將超出**rate**限制的連接直接返回503,不需要等待處理 #這句話的意思就是說,每秒處理1個請求,隊列中最多有5個待處理請求,多余請求直接返回503(個人理解) } } }
第二種方式:
首先在http中添加:
limit_conn_zone $binary_remote_addr zone=addr:10m;
然后在server中添加:
limit_conn addr 1;
示例二
http { limit_conn_zone $binary_remote_addr zone=addr:10m; ... server { ... location /download/ { limit_conn addr 1; #通過這個限制鏈接數(shù) } } }
單個連接數(shù)的下載帶寬控制:
首先在http中添加:
limit_conn_zone $binary_remote_addr zone=addr:10m;
然后在server中添加:
limit_rate 100K;
示例
http { limit_conn_zone $binary_remote_addr zone=addr:10m; ... server { ... location /download/ { limit_rate 100k; #通過這個限制單個連接數(shù)的帶寬 } } }
OK,我們知道了nginx限速原理,并學(xué)會配置這兩個配置項,測試效果我也已經(jīng)給出了效果圖,下面我們來總結(jié)一下:
要想實現(xiàn)限速,還是我之前說的,單個連接帶寬限制是必須的。
在生產(chǎn)環(huán)境中,建議不要使用連接數(shù)限制
單個連接的帶寬限制不易過低
像迅雷這種下載器的限速,可能需要別的辦法
注:文中部分內(nèi)容參考自 關(guān)于nginx的限速模塊
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/40573.html
摘要:在生產(chǎn)環(huán)境中,建議不要使用連接數(shù)限制單個連接的帶寬限制不易過低像迅雷這種下載器的限速,可能需要別的辦法注文中部分內(nèi)容參考自關(guān)于的限速模塊 nginx 限速研究匯報 寫在前面 ? ? ? ?這兩天服務(wù)器帶寬爆了,情況如下圖:showImg(https://segmentfault.com/img/bVUXj3?w=1884&h=352); 出于降低帶寬峰值的原因,我開始各種瘋狂的研究ng...
摘要:但是,你的連接數(shù)限制配置為允許單個連接數(shù),單個連接數(shù)最大帶寬為。就降低單個連接數(shù)帶寬吧要知道大家誰沒事會用瀏覽器自帶下載器下載呢注本文只探討限速模塊在不同業(yè)務(wù)下的限速彩蛋偶爾發(fā)現(xiàn),將連接數(shù)限制為迅雷不能高速下載了。 nginx 內(nèi)置模塊限速怎么使用就不多說了,今天來說說連接數(shù)和單個連接數(shù)限速的事。 場景:A公司有100人,A公司只有一個公網(wǎng)IP,假設(shè)A公司可能有100個人同時在下載你的...
摘要:但是,你的連接數(shù)限制配置為允許單個連接數(shù),單個連接數(shù)最大帶寬為。就降低單個連接數(shù)帶寬吧要知道大家誰沒事會用瀏覽器自帶下載器下載呢注本文只探討限速模塊在不同業(yè)務(wù)下的限速彩蛋偶爾發(fā)現(xiàn),將連接數(shù)限制為迅雷不能高速下載了。 nginx 內(nèi)置模塊限速怎么使用就不多說了,今天來說說連接數(shù)和單個連接數(shù)限速的事。 場景:A公司有100人,A公司只有一個公網(wǎng)IP,假設(shè)A公司可能有100個人同時在下載你的...
摘要:下面是幾種常見的限流技術(shù)一限流算法常用的限流算法有令牌桶,漏桶令牌桶令牌桶算法是網(wǎng)絡(luò)流量整形和速率限制中最常使用的一種算法。 就秒殺接口來說,當(dāng)訪問頻率或者并發(fā)請求超過其承受范圍的時候,這時候我們就要考慮限流來保證接口的可用性,以防止非預(yù)期的請求對系統(tǒng)壓力過大而引起的系統(tǒng)癱瘓。通常的策略就是拒絕多余的訪問,或者讓多余的訪問排隊等待服務(wù)。下面是幾種常見的限流技術(shù) 一、限流算法常用的限流算...
摘要:作為一組獨立的微服務(wù)之一被實現(xiàn)并作為一個單獨的進行發(fā)布。該配置將暴露所有由網(wǎng)關(guān)發(fā)布的,入口位于,用協(xié)議加密保護。由網(wǎng)關(guān)發(fā)布的所有的所有后端服務(wù)均在中被定義。與瀏覽器不同,網(wǎng)關(guān)并不能向客戶端發(fā)送帶有新的命名的重定向。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實踐干貨哦~ 本文來自云+社區(qū)翻譯社,作者ArrayZoneYour Nginx往往是構(gòu)建微服務(wù)中必不可缺的一部分,從本文中...
閱讀 1677·2019-08-30 12:51
閱讀 663·2019-08-29 17:30
閱讀 3702·2019-08-29 15:17
閱讀 860·2019-08-28 18:10
閱讀 1368·2019-08-26 17:08
閱讀 2177·2019-08-26 12:16
閱讀 3441·2019-08-26 11:47
閱讀 3507·2019-08-23 16:18