首頁  >  文章  >  運維  >  nginx怎麼限流

nginx怎麼限流

(*-*)浩
(*-*)浩原創
2019-06-10 15:21:526513瀏覽

電商平台行銷時候,常常會碰到的大流量問題,除了做流量分流處理,可能還要做用戶黑白名單、信譽分析,進而根據用戶ip信譽權重做相應的流量攔截、限制流量。

nginx怎麼限流

Nginx本身有的請求限制模組ngx_http_limit_req_module、流量限制模組ngx_stream_limit_conn_module基於令牌桶演​​算法,可以方便的控制令牌速率,自訂調節限流,實現基本的限流控制。

nginx怎麼限流

演算法想法是:

#令牌以固定速率產生,並快取到令牌桶中;

令牌桶放滿時,多餘的令牌被丟棄;

請求要消耗等比例的令牌才能被處理;

令牌不夠時,請求被快取.

漏桶演算法:

nginx怎麼限流

#演算法想法是:

##水(請求)從上方倒入水桶,從水桶下方流出(被處理);

來不及流出的水存在水桶中(緩衝),以固定速率流出;水桶滿後水溢出(丟棄)。

這個演算法的核心是:快取請求、勻速處理、多餘的請求直接丟棄。


相比漏桶演算法,令牌桶演算法不同之處在於它不但有一個“桶”,還有個佇列,這個桶是用來存放令牌的,佇列才是用來存放請求的。

從作用上來說,漏桶和令牌桶演算法最明顯的區別就是是否允許突發流量(burst)的處理,漏桶演算法能夠強行限制資料的即時傳輸(處理)速率,對突發流量不做額外處理;而令牌桶演算法能夠在限制資料的平均傳輸速率的同時允許某種程度的突發傳輸。

Nginx依請求速率限速模組使用的是漏桶演算法,即能夠強行保證請求的即時處理速度不會超過設定的閾值。

Nginx官方版本限制IP的連線和同時分別有兩個模組:

limit_req_zone 用來限制單位時間內的請求數,也就是速率限制,採用的漏桶演算法"leaky bucket"。

limit_req_conn 用來限制相同時間連結數,即並發限制。

更多Nginx相關技術文章,請造訪

Nginx使用教學欄位進行學習! 

以上是nginx怎麼限流的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn