HTTP流量復制引流工具(web壓測及線上問題復現利器)--Gor(GoReplay)


一、有什么用

將機器http請求復制轉發到指定的機器上去。
通常可能會通過ab等壓測工具來對單一http接口進行壓測。但如果是需要http服務整體壓測,使用ab來壓測工作量大且不方便,通過線上流量復制引流,通過將真實請求流量放大N倍來進行壓測,能對服務有一個較為全面的檢驗。

二、安裝

前往官方下載:https://github.com/buger/goreplay/releases
在Linux服務器上直接執行以下命令即可:

wget https://github.com/buger/goreplay/releases/download/v0.16.1/gor_0.16.1_x64.tar.gz
tar -xf gor_0.16.1_x64.tar.gz
cp gor /usr/bin/
gor -h

三、應用場景

3.1 流量實時復制引流(--input-raw 攔截端口配合--output-http輸出)

3.1.1 當對服務功能進行了改造,不能直接上線,需要真實請求來做驗證,可以用流量復制引流

gor --input-raw :80 --output-http "http://target_server:8080"  
#將本機80端口的HTTP流量復制到targer_server:8080

3.1.2 如果目標服務器使用的庫與線上機器一樣,需要只引流Get方法,不應該復制上行方法(POST等)

gor --input-raw :80  --http-allow-method GET --output-http "http://target_server:8080"

3.1.3 當需要對線上服務進行整體性能壓測時,可將線上請求擴大N倍,進行引流

gor --input-raw :80  --http-allow-method GET --output-http "http://target_server:8080|200%" #將請求擴大1倍,也可縮小,調整"|"后面的百分比即可

3.1.4 只復制某個URL請求,--http-allow-url參數

gor --input-raw :8080  --http-allow-method GET --output-http "http://target_server:8080" --http-allow-url mall.*hotword
#--http-allow-url參數可用正則表達式
#--output-http-url-regexp在gor 0.16已經過期,使用--http-allow-url代替

3.1.5 多目標服務器的流量復制引流,有點類似nginx的mirror

gor --input-raw :80 --output-http "http://target_server:8080" --output-http "http://target_server2:8080"

3.2 錄制與回放

適合在夜深人靜的時候,偷摸干一些和諧的事(≧∀≦)
3.2.1 錄制,只是gor輸出目標改為本地文件,使用--output-file參數

gor --input-raw :80 --output-file gor_request.log

3.2.2 回放

gor --input-file "gor_request.log|200%" --output-http "http://target_server:8080"

四、最后

官方文檔:
https://github.com/buger/goreplay/wiki


免責聲明!

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



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