需求:
當服務器的訪問壓力過大時,實現降級,將接受不了的請求重定向到應急界面。
一、限流nginx設置
nginx限流使用模塊 upstream
放置在http模塊
#限流並發 upstream node{ server 127.0.0.1:8080 max_conns=1; }
#超出的請求會返回502狀態碼
放置在server模塊
#測試地址,訪問服務器py路徑會轉發到本機的8080端口
location /py { proxy_pass http://node/; } #錯誤重定向到降級界面 error_page 502 503 https://fund/b.html;
注意:如果少了一個/ 會將請求轉發到8080的/py路徑下
proxy_pass http://node;
二、准備測試環境
開啟8080端口,使用web.py 開啟一個簡單的端口
安裝web.py
pip install web.py==0.40-dev1
編寫網站腳本webtest.py
import web urls = ( '/', 'index' ) class index: def GET(self): return "Hello, world!" if __name__ == "__main__": app = web.application(urls, globals()) app.run()
運行腳本啟動端口 python webtest.py 0.0.0.0:8080 啟動8080端口允許任何IP訪問
三、測試限流配置
使用jmeter測試
1、限流設置為並發連接數1
請求

結果

並發請求5,發送100次,共500個請求,成功367,失敗133
並發請求10.發送100次,共1000個請求,成功566,失敗434
並發請求20.發送100次,共2000個請求,成功848,失敗1152
