golang 壓測工具vegeta改造-支持自定義壓測任務

背景

之前在公司做壓測工作的時候,使用了web壓測工具vegeta。後續又接到過dns的性能壓測、redis的性能壓測等任務。http的壓測工具vegeta並不能滿足需求了。於是模仿vegeta的lib包寫了attacker 這個項目。

Attacker

attacker是一個支持自定義任務的項目。 attacker模仿了vegeta的壓測邏輯,支持自定義任務。可以按照指定的壓測週期,壓測頻率執行自定義任務。
每個任務可以分爲幾個順序相關或無關的子任務。

使用

package main

import (
	"os"
	"time"

	attacker "github.com/FengGeSe/attacker/lib"
	cmd "github.com/FengGeSe/attacker/cmd"
)

// implements attacker.Task
type myTask struct{}
var _ attacker.Task = &myTask{}

var count = 0

func (t *myTask) Run() *attacker.Result {
	rst := attacker.NewResult("流程壓測")
	// A
	{
		subRst := rst.SubResult("操作A")
		subRst.StartTiming()
		// do something
		time.Sleep(1 * time.Millisecond)
		subRst.EndTiming()
	}

	// B
	{
		subRst := rst.SubResult("操作B")
		subRst.StartTiming()
		// do something
		time.Sleep(1 * time.Millisecond)
		subRst.EndTiming()

		// mock error
		if count == 1 {
			subRst.Code = 500
			subRst.Error = "出錯了偶"
			count++
			return rst
		}
		count++
	}

	// C
	{
		subRst := rst.SubResult("操作C")
		subRst.StartTiming()
		// do something
		time.Sleep(1 * time.Millisecond)
		subRst.EndTiming()
	}

	return rst
}

func main() {
	task := &myTask{}
	cmd.Run(task, os.Stdout)
}

運行:go run main.go attack -d 1s -r 10

開始壓測: 2020-02-05 21:01:59 , rate=10/s, duration=1s
+--------------+------+--------+--------+--------+-------+---------+---------+--------+--------+--------+
| Task         | Rate | Ratio  | Mean   | Max    | Total | Success | Failure | P50    | P95    | P99    |
+--------------+------+--------+--------+--------+-------+---------+---------+--------+--------+--------+
| 流程壓測     | 9.89 | 90.0%  | 4.04ms | 4.12ms | 10    | 9       | 1       | 4.04ms | 4.12ms | 4.12ms |
|  1.操作A     | -    | 100.0% | 1.32ms | 1.37ms | 10    | 10      | 0       | 1.33ms | 1.37ms | 1.37ms |
|  2.操作B     | -    | 90.0%  | 1.34ms | 1.36ms | 10    | 9       | 1       | 1.33ms | 1.36ms | 1.36ms |
|  3.操作C     | -    | 100.0% | 1.32ms | 1.37ms | 9     | 9       | 0       | 1.32ms | 1.37ms | 1.37ms |
+--------------+------+--------+--------+--------+-------+---------+---------+--------+--------+--------+
Error Set:
[1]	錯誤: 出錯了偶
	數量: 1

更多使用詳情請見github: https://github.com/FengGeSe/attacker
ps: 好用記得點star .~

發佈了119 篇原創文章 · 獲贊 32 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章