這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
常見的 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 還支援根據Regex過濾流量,這意味著可以單獨測試某個 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 是開源的,意味著可以方便的整合到自己的架構中,可以用在壓力測試平台、即時資料流量分析、應用程式層防火牆等等方面。
本文轉載自:http://blog.eood.cn/web-performance-testing-gor