Nginx基于漏桶算法配置限流詳解
Nginx配置限流
Nginx有限流功能,是基于漏桶算法實(shí)現(xiàn)的
limit_req_zone是配置在http模塊中的
#設(shè)置限流 zone用來定義ip狀態(tài)和url訪問頻率的共享區(qū)域,其中mylimit為區(qū)域名稱,冒號(hào)后為區(qū)域大小,16000個(gè)IP地址的狀態(tài)信息大約是1M,rate為最大請(qǐng)求速率(如每分鐘一個(gè)請(qǐng)求) limit_req_zone $binary_remote_addr zone=mylimit:1m rate=1r/m;
limit_req是配置在location塊、server塊、http塊中
# 請(qǐng)求限流 zone為上述定義的區(qū)域名稱 burst為排隊(duì)大小 nodelay表示不限制單個(gè)請(qǐng)求的延遲時(shí)間 limit_req zone=mylimit burst=10 nodelay;
burst作用
漏桶算法是勻速的,如上述的示例rate=1r/m,每分鐘就只漏出一個(gè)請(qǐng)求,如果一分鐘來了很多的請(qǐng)求,就只能處理一個(gè),其他的都拋棄掉。
但是burst的配置可以使用FIFO隊(duì)列可以將請(qǐng)求緩存起來,只有隊(duì)列滿了才會(huì)拒絕新的請(qǐng)求,默認(rèn)情況下就算進(jìn)了隊(duì)列也是按照rate速率來執(zhí)行的,每分鐘執(zhí)行一個(gè)
delay作用
由于排隊(duì)執(zhí)行,延遲大大增加,可以使用delay來進(jìn)行設(shè)置,首先nodelay表示沒有延遲,在隊(duì)列里的也是直接就執(zhí)行
由于沒有延時(shí)了,導(dǎo)致同一時(shí)刻要同時(shí)處理漏出來的以及隊(duì)列中的,那么如何控制并發(fā)數(shù)呢,可以使用delay來進(jìn)行精確地配置
limit_req zone=mylimit burst=10 delay=5;
上述配置delay=5表示從隊(duì)列中的第6個(gè)請(qǐng)求開始延時(shí),這樣可以控制并發(fā)的數(shù)量
以上就是Nginx基于漏桶算法配置限流詳解的詳細(xì)內(nèi)容,更多關(guān)于Nginx漏桶算法配置限流的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Linux下Nginx服務(wù)設(shè)置開機(jī)自啟動(dòng)的命令詳解
這篇文章主要介紹了Linux下Nginx服務(wù)設(shè)置開機(jī)自啟動(dòng)的命令,文中通過代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-09-09Nginx + php 搭建 超性能 WEB 服務(wù)器
Nginx ("engine x") 是一個(gè)高性能的 HTTP 和反向代理服務(wù)器,也是一個(gè) IMAP/POP3/SMTP 代理服務(wù)器。2010-03-03使用nginx+tomcat+keepalived實(shí)現(xiàn)高可用的詳細(xì)步驟
這篇文章主要介紹了nginx+tomcat+keepalived實(shí)現(xiàn)高可用,包括安裝nginx服務(wù)的步驟,詳細(xì)介紹了安裝keepalived的方法,對(duì)nginx+tomcat+keepalived高可用相關(guān)知識(shí)感興趣的朋友一起看看吧2022-03-03windows系統(tǒng)安裝配置nginx環(huán)境
這篇文章介紹了windows系統(tǒng)安裝配置nginx環(huán)境的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06