Contents

通用技术-压测工具

Contents

hye

github 官网

hey 是一个向 Web 应用程序发送一些负载的小程序

1
Usage: hey [options...] <url>

常见选项

  • -n:请求数,默认200
  • -c:客户端worker数,默认50
  • -q:每个客户端worker请求速率限制(qps),默认无限制
  • -z:请求时间,如果设置了z那么n会失效,例子:-z 10s, -z 3m
  • -m:请求方法
  • -t:请求超时时间
  • -H:自定义请求头,后面跟一个健值对字符串,例子:-H "Accept: text/html"
  • -A:HTTP Accept header
  • -d:HTTP request body
  • -D:从文件赋值HTTP request body
  • -T:Content-type,默认是"text/html"
  • -a:Basic authentication, username:password
  • -x:HTTP Proxy address as host:port

常见用法

1
hey -z 1s -c 110 -q 1 'http://127.0.0.1:8888/ping'

ghz

github官网

gRPC基准测试和负载测试工具

1
usage: ghz [<flags>] [<host>]

常见选项

  • –insecure:使用明文和不安全连接
  • –proto=:protobuf文件
  • –call=:完全限定的方法名称,格式为package.Service/Methodpackage.Service.Method
  • -d, –data=:调用数据为带字符串的 JSON
  • -c, –concurrency=50:客户端worker数,默认50
  • -n, –total=200:请求数,默认200
  • -z, –duration=0:请求时间,如果设置了z那么n会失效,例子:-z 10s, -z 3m

常见用法

1
ghz --insecure --proto=limit.proto --call=proto.limit.Ping -d '{}' -c 110 -n 110  127.0.0.1:8080

Go Package

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
report, err := runner.Run(
    "helloworld.Greeter.SayHello",
    "localhost:50051",
    runner.WithProtoFile("greeter.proto", []string{}),
    runner.WithDataFromFile("data.json"),
    runner.WithInsecure(true),
)

if err != nil {
    fmt.Println(err.Error())
    os.Exit(1)
}

printer := printer.ReportPrinter{
    Out:    os.Stdout,
    Report: report,
}

printer.Print("pretty")
 |