golang压力测试工具

golang压力测试工具

1.go-wrk工具

(1.) 下载安装

go get github.com/adeven/go-wrk
或者
git clone git://github.com/adeven/go-wrk.git
cd go-wrk
go build

(2.)使用

go-wrk [flags] url
go-wrk -t=8 -c=100 -n=10000 "http://127.0.0.1:8080/api/book"

-H="User-Agent: go-wrk 0.1 bechmark\nContent-Type: text/html;": 由'\n'分隔的请求头
-c=100: 使用的最大连接数
-k=true: 是否禁用keep-alives
-i=false: if TLS security checks are disabled
-m="GET": HTTP请求方法
-n=1000: 请求总数
-t=1: 使用的线程数
-b="" HTTP请求体
-s="" 如果指定,它将计算响应中包含搜索到的字符串s的频率

参考链接:https://github.com/adjust/go-wrk
2.go-stress-testing

(1.)下载

https://github.com/link1st/go-stress-testing/releases

(2.) 使用

./go-stress-testing -c 1 -n 100 -u https://www.baidu.com/

参数说明:
-c 表示并发数
-n 每个并发执行请求的次数,总请求的次数 = 并发数 * 每个并发执行请求的次数
-u 需要压测的地址

耗时: 程序运行耗时。程序每秒钟输出一次压测结果

并发数: 并发数,启动的协程数

成功数: 压测中,请求成功的数量

失败数: 压测中,请求失败的数量

qps: 当前压测的QPS(每秒钟处理请求数量)

最长耗时: 压测中,单个请求最长的响应时长

最短耗时: 压测中,单个请求最短的响应时长

平均耗时: 压测中,单个请求平均的响应时长

错误码: 压测中,接口返回的 code码:返回次数的集合

参考链接:https://github.com/link1st/go-stress-testing
3.wrk安装使用

(1.)安装

# RPM 包安装
wget https://github.com/scutse/wrk-rpm/releases/tag/4.1.0
yum install xxx.rpm
或者
yum install -y https://github.com/scutse/wrk-rpm/releases/download/4.1.0/wrk-4.1.0-1.el7.centos.x86_64.rpm
---------------------------------------------------------------------------
# 源码安装
yum groupinstall 'Development Tools'
yum install -y openssl-devel git 
git clone https://github.com/wg/wrk.git wrk
cd wrk
make
cp wrk /usr/local/bin/

(2.)使用

wrk -t8 -c100 -d30s --latency http://127.0.0.1:8080/book
-c --conections:保持的连接数
-d --duration:压测持续时间(s)
-t --threads:使用的线程总数
-s --script:加载lua脚本
-H --header:在请求头部添加一些参数
--latency 打印详细的延迟统计信息
--timeout 请求的最大超时时间(s)
4.ab工具

(1.)安装

yum install -y httpd-tools

(2.)使用

ab -c 10 -n 100 http://192.168.1.10:8081/index.html
Usage: ab [options] [http[s]://]hostname[:port]/path
Options are:
    -n requests     要执行请求总数,默认会执行一个请求
    -c concurrency  一次执行多个请求的数量,也就是并发数
    -t timelimit     用于基准测试的最大秒数,使用它在固定的总时间内对服务器进行基准测试。默认情况下,没有时间限制。
    -s timeout      超时之前等待的最大秒数。 默认值是30秒。
    -b windowsize  TCP发送/接收缓冲区的大小,以字节为单位。
    -B address     进行传出连接时要绑定的地址。
    -p postfile     包含数据到POST的文件。 还请记住设置-T。
    -u putfile     包含PUT数据的文件。 还请记住设置-T 。
    -T content-type  Content-type用于POST / PUT数据的内容类型内容类型标题,例如:'application/x-www-form-urlencoded' 默认是' 'text/plain'
    -v verbosity    verbosity 要打印多少个疑难解答信息,设置详细级别 - 4和以上打印标题信息,3和以上打印响应代码(404,200等),2和以上打印警告和信息。
    -w             以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
    -i              执行HEAD请求,而不是GET。
    -x attributes   用作<table>的属性的字符串。 属性被插入<table here>。
    -y attributes  用作<tr>的属性的字符串。
    -z attributes   用作<td>的属性的字符串。
    -C attribute    将cookie添加到请求。 参数通常采用名称=值对的形式。 这个字段是可重复的。
    -H attribute   例如 ‘Accept-Encoding: gzip’ 插入所有普通标题行之后
       
    -A attribute   添加基本的WWW认证,该属性是一个冒号分隔的用户名和密码,auth-username:password

    -P attribute     添加基本代理验证,属性是一个冒号分隔的用户名和密码,proxy-auth-username:password

    -X proxy:port   使用代理服务器和端口号。
    -V           打印版本号并退出。
    -k             使用HTTP KeepAlive功能。
    -d            不要显示百分点服务表。
    -S           不要显示信心估计和警告。
    -q            做超过150个请求时不要显示进度。
    -g filename    将收集的数据输出到gnuplot格式文件。
    -e filename    输出提供百分比的CSV文件。
    -r             不要退出套接字接收错误。
    -h            显示使用情况信息(此消息)。
    -Z ciphersuite  密码套件指定SSL / TLS密码套件(请参阅openssl密码)
    -f protocol    指定SSL / TLS协议 (SSL3, TLS1, TLS1.1, TLS1.2 or ALL)
5.webbench工具

(1.) 安装

# 安装wenbench
wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz
tar xf webbench-1.5.tar.gz
cd webbench-1.5
make && make install

(2.) 使用

# 测试
webbench -c 100 -t 30 http://IP:PORT/nginx.html # 测试静态文件访问
webbench -c 20 -t 30 http://IP:PORT/test_mem.php # 测试动态文件访问
参考链接

https://liqiang.io/post/install-wrk-with-rpm-in-centos-ea209e01

https://www.liwenzhou.com/posts/Go/benchmark_tool/

https://www.cnblogs.com/yoyoketang/p/10254685.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值