ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

go 实现压力测试

2021-10-25 18:04:36  阅读:510  来源: 互联网

标签:run 请求 压测 压力 测试 go curl string


1.项目

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

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

                  2.压缩包下载 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),如图所示:

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

postman cURL

复制内容粘贴到项目目录下的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

标签:run,请求,压测,压力,测试,go,curl,string
来源: https://blog.csdn.net/weixin_47099556/article/details/120952510

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有