終極 Web 應用性能和壓力測試工具 Gor

jopen 9年前發布 | 29K 次閱讀 Gor 測試工具

常見的 Web 應用的壓力測試工具

Web 應用壓力測試工具有很多,比如 Apache ab,node-ab,Apache JMeter, LoadRunner, httperf。但是這些工具都沒能解決一個問題:

如何正確模擬生產環境的流量

如今 Web 應用的架構變得非常復雜,內部包含復雜的各種負載均衡、 服務和 RPC 調用關系,簡單的發送 GET 請求到某些 URL 或者 API 接口完全無法模擬真實的流量。假如回放 HTTP 日志,操作又異常麻煩。Tcpcopy 雖然能夠復制實時流量,但是操作也很復雜。之前的 亞馬遜云平臺的遷移 就用到了 Gor 這個工具。

Gor 是 Web 應用壓力測試的完美方案

我一直在找一個簡單又方便的解決方案,直到找到了 Gor 。Gor 是用 Golang 寫的一個 HTTP 實時流量復制工具。只需要在 LB 或者 Varnish 入口服務器上執行一個進程,就可以把生產環境的流量復制到任何地方,比如 Staging 環境、Dev 環境。完美解決了 HTTP 層實時流量復制和壓力測試的問題。

Gor 的功能

Gor 支持流量的放大和縮小、頻率限制,這樣不需要搭建和生產環境一致的服務器集群也可以正確測試。Gor 還支持根據正則表達式過濾流量,這意味著可以單獨測試某個 API 服務。還可以修改 HTTP 請求頭,比如替換 User-Agent, 或者增加某些 HTTP Header 。

Gor 還可以把請求記錄到文件,以備回放和分析。Gor 支持和 ElasticSearch 集成,將流量存入 ES 進行實時分析。

Gor 的常用命令

簡單的 HTTP 流量復制:

gor –input-raw :80 –output-http “http://staging.com”

HTTP 流量復制頻率控制:

gor –input-tcp :28020 –output-http “http://staging.com|10″

HTTP 流量復制縮小:

gor –input-raw :80 –output-tcp “replay.local:28020|10%”

HTTP 流量記錄到本地文件:

gor –input-raw :80 –output-file requests.gor

HTTP 流量回放和壓測:

gor –input-file “requests.gor|200%” –output-http “staging.com”

HTTP 流量過濾復制:

gor –input-raw :8080 –output-http staging.com –output-http-url-regexp ^www.

最后

這個 Golang 寫的 Gor 是開源的,意味著可以方便的集成到自己的架構中,可以用在壓力測試平臺、實時流量分析、應用層防火墻等等方面。

有用的鏈接

https://github.com/buger/gor
https://github.com/doubaokun/node-ab
https://github.com/session-replay-tools/tcpcopy
https://github.com/httperf/httperf
https://github.com/buger/gor/blob/master/ELASTICSEARCH.md

來自:http://blog.eood.cn/web-performance-testing-gor

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!