Golang實現的高性能HTTP負載工具

jopen 11年前發布 | 44K 次閱讀 測試工具 Golang

Sniper

Sniper是一個功能強大、高性能的HTTP負載工具,采用Golang編寫。利用協程并發優勢,實現海量并發、超低內存占用、豐富圖表展示。是測試、分析、優化服務端性能的絕佳助手!

體驗

提供以下可執行文件,可直接運行

功能

以實用為原則,實現以下功能

  • GET / POST
  • keep-alive模式
  • https
  • 圖表展示結果
  • 測試多個目標
  • 支持大文件負載
  • 跨平臺,支持Linux,FreeBSD,Darwin

對比同類工具

Alt text

性能

  • 內存占用低于Apache Benchmark(ab)等主流負載工具
  • 執行速度接近ab,高并發時超過ab
  • 支持10k以上并發
  • 支持超大文件測試

Alt text

測試的詳細情況,與各大負載測試工具的性能對比在此

圖表展示

  • 統計分析每個請求
  • 輸出建立連接時間
  • 輸出服務端響應時間
  • 輸出總時間

基于dygraphs與html5,詳細展現服務端性能情況

從測試結果中等距采樣約1000樣本,詳細展現連接建立,鏈路傳輸和服務端執行情況

下圖展示了總時間和連接建立時間的對比,Golang是怎樣得到連接建立的時間呢?

原來項目基于net庫實現了HTTP協議棧,重構而不是官方net/http庫才拿到詳細的信息,

提升了性能。

Alt text

使用說明

1. 安裝Golang

請參考astaxie的開源Golang書籍《Go Web 編程》一書,Go安裝一節。

2. 安裝Sniper

1 $ go get github.com/lubia/sniper
2 $ go install github.com/lubia/sniper
3 $ cp src/github.com/lubia/sniper/.sniperc ~

3.使用手冊

請參見項目主頁:Sniper

關于

作者:Lubia Yang,程序員

博客:程式設計

Licence:Apache License, Version 2.0.

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