使用nginx limit_rate 解決用戶下載限速


問題

最近有一個文件下載的服務,下載流量很大,我們的帶寬有限,很多時候系統有很多人同時在下載文件
盡管客戶端已經做了一些斷點續傳以及重試,但是在用戶訪問量較大的時候容易出現鏈接因為帶寬問題被
關閉,造成用戶文件下載失敗次數比較多,因為文件偏大, 很多時候整個元數據塊下載不完整,造成了很差
的用戶體驗

解決

  • 參考方法
    因為我們的入口是基於nginx 的,所以直接使用nginx 的limit_rate指令比較靈活的,不用依賴復雜的東西
  • 實踐
    一般來說我們需要結合limit_conn 以及limit_req 一起使用,但是因為業務的也屬性,不能搞鏈接的限制,所以我們只能基
    於業務系統統計的鏈接以及帶寬情況做一個整體的限速,流量監控我們基於prormetheus(node exporter)
    +grafana,而且我們的業務有一點是系統客戶端下載的鏈接最大為兩個,這樣就是一個天然的限制鏈接,而且
    我們經常看到在限流的時候可以配置limit_rate_after 但是因為我們的業務場景是文件下載,很多時候可能也有
    很多小文件,所以在系統配置的時候沒有開啟(直接全部限速,減少因為小文件引起的流量突發)

參考配置

  • 配置指令

    很簡單,不需要復雜的,直接一個簡單的指令就可以了

 
limit_rate 2m;

說明

以上是結合自身業務系統的一個限流方案,很簡單,但是在進行了這個簡單的配置之后,系統的流量以及穩定性提高了好多

參考資料

http://nginx.org/en/docs/http/ngx_http_core_module.html
http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
http://nginx.org/en/docs/http/ngx_http_limit_req_module.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM