色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺入深講解Nginx限流相關配置

馬哥Linux運維 ? 來源:cnblogs ? 2024-04-29 11:24 ? 次閱讀

本文以示例的形式,由淺入深講解Nginx限流相關配置,是對簡略的官方文檔的積極補充。

Nginx限流使用的是leaky bucket算法,如對算法感興趣,可移步維基百科先行閱讀。不過不了解此算法,不影響閱讀本文。

空桶

我們從最簡單的限流配置開始:

limit_req_zone $binary_remote_addr zone=ip_limit:10m rate=10r/s;

server {
    location /login/ {
        limit_req zone=ip_limit;
        proxy_pass http://login_upstream;
    }
}

$binary_remote_addr 針對客戶端ip限流;

zone=ip_limit:10m 限流規則名稱為ip_limit,允許使用10MB的內存空間來記錄ip對應的限流狀態;

rate=10r/s 限流速度為每秒10次請求

location /login/ 對登錄進行限流

限流速度為每秒10次請求,如果有10次請求同時到達一個空閑的nginx,他們都能得到執行嗎?

fd91cb88-054e-11ef-a297-92fbcf53809c.png

漏桶漏出請求是勻速的。10r/s是怎樣勻速的呢?每100ms漏出一個請求。

在這樣的配置下,桶是空的,所有不能實時漏出的請求,都會被拒絕掉。

所以如果10次請求同時到達,那么只有一個請求能夠得到執行,其它的,都會被拒絕。

這不太友好,大部分業務場景下我們希望這10個請求都能得到執行。

Burst

我們把配置改一下,解決上一節的問題

limit_req_zone $binary_remote_addr zone=ip_limit:10m rate=10r/s;

server {
    location /login/ {
        limit_req zone=ip_limit burst=12;
        proxy_pass http://login_upstream;
    }
}

burst=12 漏桶的大小設置為12

fda45f32-054e-11ef-a297-92fbcf53809c.png

邏輯上叫漏桶,實現起來是FIFO隊列,把得不到執行的請求暫時緩存起來。

這樣漏出的速度仍然是100ms一個請求,但并發而來,暫時得不到執行的請求,可以先緩存起來。只有當隊列滿了的時候,才會拒絕接受新請求。

這樣漏桶在限流的同時,也起到了削峰填谷的作用。

在這樣的配置下,如果有10次請求同時到達,它們會依次執行,每100ms執行1個。

雖然得到執行了,但因為排隊執行,延遲大大增加,在很多場景下仍然是不能接受的。

NoDelay

繼續修改配置,解決Delay太久導致延遲增加的問題

limit_req_zone $binary_remote_addr zone=ip_limit:10m rate=10r/s;

server {
    location /login/ {
        limit_req zone=ip_limit burst=12 nodelay;
        proxy_pass http://login_upstream;
    }
}

nodelay 把開始執行請求的時間提前,以前是delay到從桶里漏出來才執行,現在不delay了,只要入桶就開始執行

fdb33a16-054e-11ef-a297-92fbcf53809c.png

要么立刻執行,要么被拒絕,請求不會因為限流而增加延遲了。

因為請求從桶里漏出來還是勻速的,桶的空間又是固定的,最終平均下來,還是每秒執行了5次請求,限流的目的還是達到了。

但這樣也有缺點,限流是限了,但是限得不那么勻速。以上面的配置舉例,如果有12個請求同時到達,那么這12個請求都能夠立刻執行,然后后面的請求只能勻速進桶,100ms執行1個。如果有一段時間沒有請求,桶空了,那么又可能出現并發的12個請求一起執行。

大部分情況下,這種限流不勻速,不算是大問題。不過nginx也提供了一個參數才控制并發執行也就是nodelay的請求的數量。

limit_req_zone $binary_remote_addr zone=ip_limit:10m rate=10r/s;

server {
    location /login/ {
        limit_req zone=ip_limit burst=12 delay=4;
        proxy_pass http://login_upstream;
    }
}

delay=4 從桶內第5個請求開始delay

fdbc257c-054e-11ef-a297-92fbcf53809c.png

這樣通過控制delay參數的值,可以調整允許并發執行的請求的數量,使得請求變的均勻起來,在有些耗資源的服務上控制這個數量,還是有必要的。

審核編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4629

    瀏覽量

    93193
  • nginx
    +關注

    關注

    0

    文章

    154

    瀏覽量

    12210

原文標題:Nginx限速模塊大揭秘

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    的介紹BLE與MEMS中的開發板設計

    當BLE遇到MEMS,就如同天使有了翅膀。本期從有的介紹BLE與MEMS的那些事,就從ST的STEVA
    的頭像 發表于 03-31 08:44 ?9133次閱讀

    Linux運維Nginx軟件優化之日志優化

    1. 配置Nginx服務相關日志操作1) 進行日志的切割[code][root@oldboy ~]# mkdir /server/scripts/ -p[root@oldboy ~]# cd
    發表于 12-18 15:17

    nginx中的sendfile配置說明

    nginx配置sendfile及詳細說明
    發表于 05-05 08:08

    Centos7Nginx安裝與配置步驟

    Centos7 Nginx安裝與配置,防火墻開啟端口監聽
    發表于 06-02 12:58

    請問哪位大神可以詳細介紹JavaScript拷貝和拷貝?

    JavaScript數據類型JavaScript拷貝和拷貝
    發表于 11-05 07:16

    nginx錯誤頁面配置

    16、nginx 錯誤頁面配置nginx錯誤頁面包括404 403 500 502 503 504等頁面,只需要在server中增加以下配置即可: error_page404 403
    發表于 07-26 06:54

    主要學習下nginx的安裝配置

    主要學習下nginx的安裝配置,以便于后續學習。以下在本地虛擬機上搭建學習。1、檢查系統網絡是否能連通公網:ping www.taobao.com2、確認yum源是否配置好,用于下載安裝環境基礎包
    發表于 10-19 14:12

    RF工程師必須掌握的內容:從解說S參數

    RF工程師必須掌握的內容:從解說S參數。
    的頭像 發表于 03-01 10:34 ?1.1w次閱讀
    RF工程師必須掌握的內容:從<b class='flag-5'>淺</b><b class='flag-5'>入</b><b class='flag-5'>深</b>解說S參數

    Nginx的詳細知識點講解

    Nginx是一個高性能的HTTP和反向代理服務器,特點是占用內存少,并發能力強,事實上nginx的并發能力確實在同類型的網頁服務器中表現較好 nginx專為性能優化而開發,性能是其最重要的要求,十分注重效率,有報告
    的頭像 發表于 12-26 10:25 ?2633次閱讀
    <b class='flag-5'>Nginx</b>的詳細知識點<b class='flag-5'>講解</b>

    運行nginx所需的最低配置

    運行nginx所需的最低配置: # /etc/nginx/nginx.confevents {} # event context have to be defined to consi
    的頭像 發表于 08-23 10:53 ?5529次閱讀

    Nginx常用的配置和基本功能講解

    Nginx 已經廣泛應用于 J-one 和 Jdos 的環境部署上,本文對 Nginx 的常用的配置和基本功能進行講解,適合 Nginx
    的頭像 發表于 05-04 10:25 ?699次閱讀

    C++拷貝和拷貝詳解

    當類的函數成員存在指針成員時會產生拷貝和拷貝和問題。
    發表于 08-21 15:05 ?354次閱讀
    C++<b class='flag-5'>深</b>拷貝和<b class='flag-5'>淺</b>拷貝詳解

    Nginx的特點和作用 Nginx常用命令和核心配置

    更新。性能是 Nginx 最重要的考量,其占用內存少、并發能力強、能支持高達 5w 個并發連接數,最重要的是, Nginx 是免費的并可以商業化,配置使用也比較簡單。
    的頭像 發表于 09-01 09:53 ?753次閱讀
    <b class='flag-5'>Nginx</b>的特點和作用 <b class='flag-5'>Nginx</b>常用命令和核心<b class='flag-5'>配置</b>

    Nginx常用配置與命令

    對于前端來說 Node.js 并不陌生, Nginx 和 Node.js 的很多理念類似, HTTP 服務器、事件驅動、異步非阻塞等,且 Nginx 的大部分功能使用 Node.js 也可以實現,但 Nginx 和 Node.j
    發表于 10-18 10:04 ?472次閱讀
    <b class='flag-5'>Nginx</b>常用<b class='flag-5'>配置</b>與命令

    nginx負載均衡配置介紹

    目錄 nginx負載均衡 nginx負載均衡介紹 反向代理與負載均衡 nginx負載均衡配置 Keepalived高可用nginx負載均衡器
    的頭像 發表于 11-10 13:39 ?291次閱讀
    <b class='flag-5'>nginx</b>負載均衡<b class='flag-5'>配置</b>介紹
    主站蜘蛛池模板: 4虎最新网址| 巨胸美女狂喷奶水www网麻豆 | 亚洲国产精品无码中文字满 | 成人影片大全 | 国产在线播放不卡 | 妖精视频免费看 | 名女躁b久久天天躁 | 国产精品人妻在线观看 | 夜夜穞狠狠穞 | 旧里番YY6080在线播放 | 成电影人免费网站 | 欧美 亚洲 日韩 在线综合 | 国产欧美日韩精品a在线观看高清 | 午夜影视不用充钱的免费 | 一品道门在线观看免费视频 | 国产亚洲精品久久综合阿香 | 欧美精品v欧洲高清 | 吉吉av电影| 日本G奶乳液汁 | 三级黄色高清视频 | QVOD理论| 精品无码乱码AV | 国产熟妇无码一区二 | 吻嘴胸全身好爽床大全 | 再插深点嗯好大好爽 | 亲胸揉胸膜下刺激视频在线观看 | 美女逼逼毛茸茸 | 99RE8国产这里只有精品 | 极品内射少妇精品无码视频 | 国产精品自在在线午夜蜜芽tv在线 | 羞羞一区二区三区四区片 | 伊人yinren6综合网色狠狠 | 国产欧美精品一区二区三区-老狼 | 二色AV天堂在线 | lesbabes性欧美 | 91夫妻交友论坛 | 亚洲成人综合在线 | 国产精品久久久久影院 | 视频一区精品自拍亚洲 | 男人都懂www深夜免费网站 | 99久久久久精品国产免费麻豆 |