nginx高并發(fā)情況下限流

Nginx按請(qǐng)求速率限速模塊使用的是漏桶算法吮成,即能夠強(qiáng)行保證請(qǐng)求的實(shí)時(shí)處理速度不會(huì)超過(guò)設(shè)置的閾值凭迹。

Nginx官方版本限制IP的連接和并發(fā)分別有兩個(gè)模塊:

limit_req_zone?用來(lái)限制單位時(shí)間內(nèi)的請(qǐng)求數(shù)忆肾,即速率限制,采用的漏桶算法?"leaky bucket"。

limit_req_conn?用來(lái)限制同一時(shí)間連接數(shù),即并發(fā)限制蹂风。


主要配置

http {limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;

? ? server {

? ? location /campaign/ {

? ? ? ? ? ? ? ? limit_req zone=perip burst=5 nodelay;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? }

配置說(shuō)明

limit_conn是對(duì)某個(gè)KEY對(duì)應(yīng)的總的網(wǎng)絡(luò)連接數(shù)進(jìn)行限流∏睿可以按照IP來(lái)限制IP維度的總連接數(shù)惠啄,或者按照服務(wù)域名來(lái)限制某個(gè)域名的總連接數(shù)。但是記住不是每一個(gè)請(qǐng)求連接都會(huì)被計(jì)數(shù)器統(tǒng)計(jì)任内,只有那些被Nginx處理的且已經(jīng)讀取了整個(gè)請(qǐng)求頭的請(qǐng)求連接才會(huì)被計(jì)數(shù)器統(tǒng)計(jì)

limit_conn_zone:用來(lái)配置限流KEY撵渡、及存放KEY對(duì)應(yīng)信息的共享內(nèi)存區(qū)域大小族奢;此處的KEY是“binary_remote_addr”其表示IP地址姥闭,也可以使用如binaryremoteaddr”其表示IP地址,也可以使用如server_name作為KEY來(lái)限制域名級(jí)別的最大連接數(shù)越走;

limit_conn_status:配置被限流后返回的狀態(tài)碼棚品,默認(rèn)返回503;

limit_conn_log_level:配置記錄被限流后的日志級(jí)別廊敌,默認(rèn)error級(jí)別

Nginx限流配置

http {

? ? limit_req_zone $binary_remote_addr zone=perip:10m rate=1r/s;

? ? limit_req_zone $server_name zone=perserver:10m rate=10r/s;

? ? limit_req_log_level notice ;

? ? server {

? ? ? ? location /search/ {

? ? ? ? ? ? limit_req zone=perip burst=5 nodelay;

? ? ? ? ? ? limit_req zone=perserver burst=10;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

范例詳解

limit_req_zone [key] zone = [name]:[size] rate=[rate]

limit_req_zone這個(gè)變量只能在HTTP中使用铜跑,limit_req_zone,用來(lái)限制請(qǐng)求的頻率骡澈。limit_req_zone$binary_remote_addr zone=perip:10m rate=1r/s;每個(gè)IP的請(qǐng)求頻率每秒不能超過(guò)1次且最大容量為10M.limit_req_zone$server_name zone=perserver:10m rate=10r/s;每個(gè)虛擬服務(wù)的請(qǐng)求頻率每秒不能超過(guò)10次且最大容量為10M锅纺。key表示限制的關(guān)鍵詞 可以是 IP 或 虛擬服務(wù)zone的名稱可以自定義,但不能重復(fù)肋殴,它代表一個(gè)存儲(chǔ)session 狀態(tài)的容器囤锉,size 表示 容器的大小坦弟。以范例中的 perip 限制區(qū)域?yàn)槔笮?0M官地,按照 64-byte / session酿傍,約能存儲(chǔ) 1.6W 個(gè) session。rate表示請(qǐng)求的頻率驱入,另外還有 r/m 表示每分鐘的請(qǐng)求頻率限制赤炒。

limit_req zone=[name] burst=[count] nodelay

limit_req這個(gè)變量可以放在 server 中 或者 location 中,放在 server 中時(shí)表示對(duì)整個(gè)服務(wù)做限流亏较,放在 location 中表示對(duì)特定請(qǐng)求做限流莺褒。參數(shù)說(shuō)明:zone選擇的限流容器 name 限流容器名稱burst緩存的數(shù)量 count 最大請(qǐng)求緩存數(shù)nodelay表示不延遲,即如果請(qǐng)求緩存超過(guò) count 的值時(shí)馬上返回 503 錯(cuò)誤雪情。

limit_req_log_level info | notice | warn | error

限流日志級(jí)別 遵岩,默認(rèn)為 error

nginx限流使用模塊 upstream

放置在http模塊

#限流并發(fā)

upstream node{

server127.0.0.1:8080 max_conns=1;

? ? ? ? ? ? ? ? ? ? ? ? ?}

#超出的請(qǐng)求會(huì)返回502狀態(tài)碼

放置在server模塊

#測(cè)試地址,訪問(wèn)服務(wù)器py路徑會(huì)轉(zhuǎn)發(fā)到本機(jī)的8080端口

location /py {

proxy_pass http://node/;

? ? ? ? ? ? ? ? ? ?}

#錯(cuò)誤重定向到降級(jí)界面

error_page502 503 https://fund/b.html;

注意:如果少了一個(gè)/ 會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到8080的/py路徑下

proxy_pass http://node旺罢;

準(zhǔn)備測(cè)試環(huán)境

開啟8080端口旷余,使用web.py 開啟一個(gè)簡(jiǎn)單的端口

安裝web.py?

pip install web.py==0.40-dev1

編寫網(wǎng)站腳本webtest.py

importweburls=('/','index')classindex:defGET(self):return"Hello, world!"if__name__=="__main__":app=web.application(urls, globals())app.run()

運(yùn)行腳本啟動(dòng)端口 python webtest.py 0.0.0.0:8080 啟動(dòng)8080端口允許任何IP訪問(wèn)

測(cè)試限流配置

使用jmeter測(cè)試

1、限流設(shè)置為并發(fā)連接數(shù)1

請(qǐng)求

結(jié)果

并發(fā)請(qǐng)求5扁达,發(fā)送100次正卧,共500個(gè)請(qǐng)求,成功367跪解,失敗133

并發(fā)請(qǐng)求10.發(fā)送100次炉旷,共1000個(gè)請(qǐng)求,成功566叉讥,失敗434

?并發(fā)請(qǐng)求20.發(fā)送100次窘行,共2000個(gè)請(qǐng)求,成功848图仓,失敗1152

參考文獻(xiàn)?

https://my.oschina.net/chenxiaobian/blog/888196

https://www.cnblogs.com/maoxianfei/p/9890761.html

Nginx ngx_http_upstream_module模塊詳解

https://blog.csdn.net/qq_37187976/article/details/79627912

Nginx的兩種限流配置? ? ----? 較詳細(xì)罐盔。

https://songzixian.com/linuxcmot/1530.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市救崔,隨后出現(xiàn)的幾起案子惶看,更是在濱河造成了極大的恐慌,老刑警劉巖六孵,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纬黎,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡劫窒,警方通過(guò)查閱死者的電腦和手機(jī)本今,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人冠息,你說(shuō)我怎么就攤上這事挪凑。” “怎么了铐达?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵岖赋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我瓮孙,道長(zhǎng),這世上最難降的妖魔是什么选脊? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任杭抠,我火速辦了婚禮,結(jié)果婚禮上恳啥,老公的妹妹穿的比我還像新娘偏灿。我一直安慰自己,他們只是感情好钝的,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布翁垂。 她就那樣靜靜地躺著,像睡著了一般硝桩。 火紅的嫁衣襯著肌膚如雪沿猜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天碗脊,我揣著相機(jī)與錄音啼肩,去河邊找鬼。 笑死衙伶,一個(gè)胖子當(dāng)著我的面吹牛祈坠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播矢劲,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赦拘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了芬沉?” 一聲冷哼從身側(cè)響起躺同,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎花嘶,沒(méi)想到半個(gè)月后笋籽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡椭员,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年车海,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡侍芝,死狀恐怖研铆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情州叠,我是刑警寧澤棵红,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站咧栗,受9級(jí)特大地震影響逆甜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜致板,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一交煞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧斟或,春花似錦素征、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至怜珍,卻和暖如春端蛆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绘面。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工欺税, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人揭璃。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓晚凿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親瘦馍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子歼秽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友情组。感恩相遇燥筷!感恩不離不棄。 中午開了第一次的黨會(huì)院崇,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,564評(píng)論 0 11
  • 彩排完肆氓,天已黑
    劉凱書法閱讀 4,218評(píng)論 1 3
  • 表情是什么,我認(rèn)為表情就是表現(xiàn)出來(lái)的情緒底瓣。表情可以傳達(dá)很多信息谢揪。高興了當(dāng)然就笑了,難過(guò)就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 125,038評(píng)論 2 7