亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Nginx的用武之地

  Nginx是一款自由的、開源的、高性能的HTTP服務(wù)器和反向代理服務(wù)器;同時(shí)也是一個(gè)IMAP、POP3、SMTP代理服務(wù)器;Nginx可以作為一個(gè)HTTP服務(wù)器進(jìn)行網(wǎng)站的發(fā)布處理,另外Nginx可以作為反向代理進(jìn)行負(fù)載均衡的實(shí)現(xiàn)。

而這一些也造就了Nginx以下的特點(diǎn)

  • Nginx使用基于事件驅(qū)動架構(gòu),使得其可以支持?jǐn)?shù)以百萬級別的TCP連接
  • 高度的模塊化和自由軟件許可證使得第三方模塊層出不窮(這是個(gè)開源的時(shí)代啊~)
  • Nginx是一個(gè)跨平臺服務(wù)器,可以運(yùn)行在linux,windows,F(xiàn)reeBSD,Solaris,AIX,mac OS等操作系統(tǒng)上
  • 這些優(yōu)秀的設(shè)計(jì)帶來的是極大的穩(wěn)定性

  所以,Nginx火了!


這不,最近公司業(yè)務(wù)改變,導(dǎo)致數(shù)據(jù)流量特別大,原有的系統(tǒng)架構(gòu)短時(shí)間內(nèi)還沒有辦法輕易改動,幸好當(dāng)時(shí)的架構(gòu)師有遠(yuǎn)見,用了Nginx,所以現(xiàn)在就先用Nginx限流撐一段時(shí)間,在抓緊彌補(bǔ),也就有了今天的文章,Nginx的兩種限流方式

一、限制訪問頻率(正常流量)

Nginx中我們使用 ngx_http_limit_req_module模塊來限制請求的訪問頻率,基于漏桶算法原理實(shí)現(xiàn)。接下來我們使用 nginx limit_req_zone 和 limit_req 兩個(gè)指令,限制單個(gè)IP的請求處理速率。

高并發(fā)襲來,Nginx限流該如何進(jìn)行,源碼講解(附Nginx面試題)

 

語法:limit_req_zone key zone rate

  • key :定義限流對象,binary_remote_addr 是一種key,表示基于 remote_addr(客戶端IP) 來做限流,binary_ 的目的是壓縮內(nèi)存占用量。
  • zone:定義共享內(nèi)存區(qū)來存儲訪問信息, myRateLimit:10m 表示一個(gè)大小為10M,名字為myRateLimit的內(nèi)存區(qū)域。1M能存儲16000 IP地址的訪問信息,10M可以存儲16W IP地址訪問信息。
  • rate:用于設(shè)置最大訪問速率,rate=10r/s 表示每秒最多處理10個(gè)請求。Nginx 實(shí)際上以毫秒為粒度來跟蹤請求信息,因此 10r/s 實(shí)際上是限制:每100毫秒處理一個(gè)請求。這意味著,自上一個(gè)請求處理完后,若后續(xù)100毫秒內(nèi)又有請求到達(dá),將拒絕處理該請求。

二、限制訪問頻率(突發(fā)流量)

按上面的配置在流量突然增大時(shí),超出的請求將被拒絕,無法處理突發(fā)流量,那么在處理突發(fā)流量的時(shí)候,該怎么處理呢?Nginx提供了 burst 參數(shù)來解決突發(fā)流量的問題,并結(jié)合 nodelay 參數(shù)一起使用。burst 譯為突發(fā)、爆發(fā),表示在超過設(shè)定的處理速率后能額外處理的請求數(shù)。

高并發(fā)襲來,Nginx限流該如何進(jìn)行,源碼講解(附Nginx面試題)

 

burst=20 nodelay表示這20個(gè)請求立馬處理,不能延遲,相當(dāng)于特事特辦。不過,即使這20個(gè)突發(fā)請求立馬處理結(jié)束,后續(xù)來了請求也不會立馬處理。

burst=20 相當(dāng)于緩存隊(duì)列中占了20個(gè)坑,即使請求被處理了,這20個(gè)位置這只能按 100ms一個(gè)來釋放。這就達(dá)到了速率穩(wěn)定,但突然流量也能正常處理的效果。

高并發(fā)襲來,Nginx限流該如何進(jìn)行,源碼講解(附Nginx面試題)

 

三、限制并發(fā)連接數(shù)

Nginx 的 ngx_http_limit_conn_module模塊提供了對資源連接數(shù)進(jìn)行限制的功能,使用 limit_conn_zone 和 limit_conn 兩個(gè)指令就可以了。

高并發(fā)襲來,Nginx限流該如何進(jìn)行,源碼講解(附Nginx面試題)

 

  • limit_conn perip 20:對應(yīng)的key是 $binary_remote_addr,表示限制單個(gè)IP同時(shí)最多能持有20個(gè)連接。
  • limit_conn perserver 100:對應(yīng)的key是 $server_name,表示虛擬主機(jī)(server) 同時(shí)能處理并發(fā)連接的總數(shù)。注意,只有當(dāng) request header 被后端server處理后,這個(gè)連接才進(jìn)行計(jì)數(shù)。

分享到:
標(biāo)簽:Nginx 限流
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定