go 实现压力测试

1.项目

go-stress-testing 是go语言实现的简单压测工具,源码开源、支持二次开发,可以压测http、webSocket请求,使用协程模拟单个用户,可以更高效的利用CPU资源。

项目地址:1.Git下载 https://github.com/link1st/go-stress-testing

                  2. wget下载 wget https://codeload.github.com/link1st/go-stress-testing/zip/master

                  3.压缩包下载 https://download.csdn.net/download/weixin_47099556/34408397

2.详细说明

 1.请求参数

  -c uint
      并发数 (default 1)
  -n uint
      请求数(单个并发/协程) (default 1)
  -u string
      压测地址
  -d string
      调试模式 (default "false")
  -http2
        是否开http2.0
  -k    是否开启长连接
  -m int
        单个host最大连接数 (default 1)
  -H value
      自定义头信息传递给服务器 示例:-H 'Content-Type: application/json'
  -data string
      HTTP POST方式传送数据
  -v string
      验证方法 http 支持:statusCode、json webSocket支持:json
  -p string
      curl文件路径

-n 是单个用户请求的次数,请求总次数 = -c-n, 这里考虑的是模拟用户行为,所以这个是每个用户请求的次数

2.示例(linux)

# 进入项目目录
cd go-stress-testing

# 使用请求百度页面
go run main.go -c 1 -n 100 -u https://www.baidu.com/

# 使用debug模式请求百度页面
go run main.go -c 1 -n 1 -d true -u https://www.baidu.com/

# 使用 curl文件(文件在curl目录下) 的方式请求
go run main.go -c 1 -n 1 -p curl/baidu.curl.txt

# 压测webSocket连接
go run main.go -c 10 -n 10 -u ws://127.0.0.1:8089/acc

3.使用 curl文件进行压力测试时(接2)

curl是Linux在命令行下的工作的文件传输工具,是一款很强大的http命令行工具。

使用curl文件可以压测使用非GET的请求,支持设置http请求的 method、cookies、header、body等参数

1. chrome 浏览器复制 curl内容,打开开发者模式(快捷键F12),如图所示:

go 实现压力测试_第1张图片

 2. postman 复制 curl内容,如图所示:

go 实现压力测试_第2张图片

复制内容粘贴到项目目录下的curl/baidu.curl.txt文件中,执行命令就可以进行压测了。(文件名称自己命名,需为txt文件)。

 3.可能存在的问题

 1.go run 或 go get 出现 cannot find package "*****" in any of... 报错。

原因:版本过低。(本人用的是ubuntu系统,通过apt下载go,下载完是1.6版本,最后自己升级到1.17版本后,就不在报错。可通过命令行 go version 查看版本)

解决办法:升级go版本

 2. go run 或 go get 报dial tcp 142.251.42.241:443: i/o timeout 超时问题。

原因:国外的无法直接下载,需设置环境为国内代理。

解决办法(如下图):

        go env -w GO111MODULE=on

        go env -w GOPROXY=https://goproxy.cn,direct

go 实现压力测试_第3张图片

你可能感兴趣的:(golang,压力测试,开发语言)