Nginx

用“nodelay”選項定義“burst”是什麼意思?

  • December 17, 2020

在 Nginx 配置中,當你想通過limit_req_zone/來限制請求處理速率時limit_req instructions,我不太了解該nodelay選項的使用。

據我了解,它會終止高於定義速率的請求,而不會延遲它們。所以它似乎等同於burst=0. 這就是為什麼我不明白下面的例子:

limit_req zone=one burst=5 nodelay;

burst定義了可以延遲的請求數量,那麼定義burst是否有nodelay選項是什麼意思?

我發現limit_req文件足夠清楚。

burst以這種方式記錄:

過多的請求會被延遲,直到它們的數量超過最大突發大小

$$ … $$

nodelay以這種方式記錄:

如果不希望在限制請求的同時延遲過多的請求,則應使用參數 nodelay

請求被限制為符合定義的速率。如果請求以更高的速率傳入,則每時間單位將提供不超過定義的請求數量。然後,您需要決定如何處理這些其他請求。

  • 預設情況下(no burst, no nodelay),請求被拒絕並返回 HTTP 503 錯誤。
  • 使用burst,您將定義數量的請求堆疊在等待隊列中,但處理它們的速度不會比定義的每時間單位速率請求快。
  • 使用burstandnodelay時,隊列不會等待,請求突發將立即得到處理

引用自:https://serverfault.com/questions/630157