go安装与hey压测

  • 背景说明
  • 适用范围
  • 使用说明
    • 一.安装并配置golang
    • 二.下载hey压测工具
    • 三.hey压测简明示例
  • 报告解读
  • 参考资料

背景说明

Jmeter(java语言开发的压测工具)的用户体验比较好,操作简单,能生成报表数据。在用JMeter排查k8s问题时,发现java虚拟机GC的时候,会产生错误的压测结果,导致错误的判断。因此,才采用hey压测工具,进行简单的压测,以确定容器云在组件升级过程中,服务是否中断。

适用范围

操作系统:centos7.3以上

使用说明

一.安装并配置golang

  1. 安装go和git
yum install -y go git
  1. 配置golang的环境变量
  • GOPATH对应的是go 下载的相关的依赖包所在地,类似于jar包的指定路径
mkdir -p /opt/addons/gopath
  • GOROOT和GOPATH指定的路径不要相同, 否则会报错“$GOPATH must not be set to $GOROOT”
cat >> ~/.bashrc <<EOF
#added by X.L.Xia
export GOROOT=/usr/bin/go
export GOPATH=/opt/addons/gopath
export PATH=\$PATH:\$GOROOT/bin
EOF
  • 启用配置
source ~/.bashrc
  • 检查golang的环境变量与版本
go version
go env

二.下载hey压测工具

go get -u github.com/rakyll/hey

三.hey压测简明示例

  • 指定时长的get请求:客户端(-c)并发为2, 持续发送请求2s (-c)
hey -z 5s -c 2 https://www.baidu.com/
  • 指定请求总数的get请求:运行2000次(-n),客户端并发为50(-c)
hey -n 2000 -c 50  https://www.baidu.com/
  • 指定host的get请求:使用的cpu核数为2 (-cpus), 压测时长为5s(-z), 并发数为2
hey -z 5s -c 2 -cpus 2 -host "baidu.com" https://220.181.38.148
  • 请求带header的get接口:压测时长为5s (-z), 客户端发送请求的速度为128QPS, 请求头用-H添加
hey -z 5s -q 128 -H "client-ip:0.0.0.0" -H "X-Up-Calling-Line-Id:X.L.Xia" https://www.baidu.com/
  • 请求post请求
hey -z 5s -c 50 -m POST -H "info:firstname=xiuli; familyname=xia" -d "year=2020&month=1&day=21" https://www.baidu.com/
  • 代理模式,需额外配置proxy:因部分ip频繁发请求有风险,故可用-x设置白名单代理向服务器发请求
hey -z 5s -c 10 -x "http://127.0.0.1:8001" http://baidu.com/
  • shell for循环实现压测
for i in `seq 10`; do curl -v http://baidu.com; done

报告解读

  • hey参数说明
[sre@ecs-xxx ~]# hey --help
Usage: hey [options...] <url>Options:// 指定运行的总请求数。默认值为200。-n  Number of requests to run. Default is 200.// 客户端并发执行的请求数,默认为50。总请求数不能小于并发数。-c  Number of workers to run concurrently. Total number of requests cannotbe smaller than the concurrency level. Default is 50.// 客户端发送请求的速度限制,以每秒响应数QPS为单位,默认没有限制。-q  Rate limit, in queries per second (QPS) per worker. Default is no rate limit.// 发送请求的持续时长,超时后程序停止并退出。若指定了持续时间,则忽略总请求数(-n),例如-z 10s,-z 3m-z  Duration of application to send requests. When duration is reached,application stops and exits. If duration is specified, n is ignored.Examples: -z 10s -z 3m.// 输出类型。若没有提供,则打印摘要。CSV是唯一支持的格式,结果以逗号分隔各个指标项。-o  Output type. If none provided, a summary is printed."csv" is the only supported alternative. Dumps the responsemetrics in comma-separated values format.// HTTP方法,例如GET,POST,PUT,DELETE,HEAD,OPTIONS方法-m  HTTP method, one of GET, POST, PUT, DELETE, HEAD, OPTIONS.// HTTP请求头,可以用-H连续添加多个请求头。-H  Custom HTTP header. You can specify as many as needed by repeating the flag.For example, -H "Accept: text/html" -H "Content-Type: application/xml" .// 每个请求的超时时间(以秒为单位)。默认值为20s,数值0代表永不超时。-t  Timeout for each request in seconds. Default is 20, use 0 for infinite.// HTTP响应头-A  HTTP Accept header.// HTTP请求正文-d  HTTP request body.// HTTP请求正文文件-D  HTTP request body from file. For example, /home/user/file.txt or ./file.txt.// 内容类型,默认为“ text / html”。-T  Content-type, defaults to "text/html".// 基本身份验证,用户名:密码。-a  Basic authentication, username:password.// HTTP代理地址作, 使用host:port格式。-x  HTTP Proxy address as host:port.// 启用HTTP / 2-h2 Enable HTTP/2.// HTTP主机头-host    HTTP Host header.// 禁用压缩。-disable-compression  Disable compression.// 禁用保持活动状态,防止重新使用不同的HTTP请求之间的TCP连接。-disable-keepalive    Disable keep-alive, prevents re-use of TCPconnections between different HTTP requests.// 禁用HTTP重定向                      -disable-redirects    Disable following of HTTP redirects// 使用的cpu内核数。当前计算机的默认值为8核。-cpus                 Number of used cpu cores.(default for current machine is 8 cores)
  • hey结果解读
[sre@ecs-xxx ~]# hey -n 2000 -c 50  https://www.baidu.com/Summary:// 总运行时长Total:    0.5153 secsSlowest: 0.0770 secsFastest: 0.0067 secs// 平均响应时间Average:    0.0097 secs// 每秒响应数(QBS)Requests/sec:   3880.9152Total data:    454000 bytesSize/request:   227 bytes// 响应直方图
Response time histogram:0.007 [1]   |// 响应时长在0.007~0.014区间的请求总数为1940个0.014 [1940]   |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■0.021 [4]  |0.028 [0]  |0.035 [0]  |0.042 [1]  |0.049 [0]  |0.056 [5]  |0.063 [26] |■0.070 [22]    |0.077 [1]  |// http请求时延分布
Latency distribution:10% in 0.0073 secs25% in 0.0077 secs50% in 0.0081 secs75% in 0.0088 secs90% in 0.0093 secs95% in 0.0106 secs// TP99:满足百分之九十九的网络请求所需要的最低耗时99% in 0.0634 secsDetails (average, fastest, slowest):DNS+dialup:    0.0010 secs, 0.0067 secs, 0.0770 secsDNS-lookup:    0.0001 secs, 0.0000 secs, 0.0076 secsreq write: 0.0000 secs, 0.0000 secs, 0.0008 secsresp wait: 0.0083 secs, 0.0066 secs, 0.0769 secsresp read: 0.0001 secs, 0.0000 secs, 0.0029 secs
// http状态码分布
Status code distribution:[200]  2000 responses

参考资料

1. 压测工具:hey
2. 一次WEB性能压测
3.几乎所有的WEB压力测试工具 WEB压力测试工具大全
4. 推荐一款高性能 HTTP 负载测试工具 Vegeta
5. 对 wrk Latency Distribution 不准确的分析
6. HTTP 状态码 常见及分析

go安装与hey压测相关推荐

  1. 【实用工具】Windows上安装并使用压测神器 SuperBenchmarker

    介绍 Superbenchmarker是用于对HTTP API和网站进行性能测试的负载生成器命令行工具.受Apache Benchmark的启发,它打算成为steriods上的Apache Bench ...

  2. Mycat:压测Mycat及结果分析

    前言 Mycat是业内知名mysql数据库中间件,其功能在各种mysql中间件中是比较丰富的.而mycat相关组件由java语言编写,部署方便.他的功能有:不透明代理,读写分离,负载均衡,数据分片等. ...

  3. 【MySQL】sysbench压测服务器及结果解读

    前言:最近新到一批机器,需要对机器进行压测,主要压测范围包括CPU测试.磁盘IO测试.线程测试.OLTP测试等,那么sysbench就可以满足我们的压测需求.下面我们简单来看下sysbench的安装使 ...

  4. sysbench压测服务器及结果解读(重点)

    前言:最近新到一批机器,需要对机器进行压测,主要压测范围包括CPU测试.磁盘IO测试.线程测试.OLTP测试等,那么sysbench就可以满足我们的压测需求.下面我们简单来看下sysbench的安装使 ...

  5. sysbench数据库性能压测详解

    文章目录 0.参考资料&适用范围 1.安装 2.压测 2.1.CPU压测 2.2.MySQL数据库压测 2.2.1.选项说明 2.2.2.压测步骤 0.参考资料&适用范围 参考资料: ...

  6. 【性能测试】轻量级压测工具Hey

    点击蓝字关注这个神奇的公众号- 一.Hey介绍 这是个简单的命令行工具,向Web应用程序发送一些负载,同时返回统计结果 项目地址: 二.性能测试 性能测试是通过自动化的测试工具模拟多种正常.峰值以及异 ...

  7. HTTPS接口压测 --- hey工具

    最近在压测服务的各种接口,由于只是为了估算扩容所需要的资源,不需要太精确的压测数据,所以在网上不断扒拉尝试了很多种压测工具.   发现能压测https的工具还是挺少的,众所周知的ab没法支持太高的并发 ...

  8. Golang的压测工具 hey

    Golang的压测工具 hey 网址 实例 hey -n 200 -c 2 -m POST -T "application/x-www-form-urlencoded" -d 'u ...

  9. Linux下的压测工具 hey

    压测工具其实挺多的,比较出名的比如:loadrunner,jmeter等,今天简单记录下另外的压测工具hey的使用. 简单使用 ./hey -n 10 -c 1 -m POST "地址&qu ...

最新文章

  1. java程序员学C#基本语法两个小时搞定(对比学习)
  2. ubuntu11.10 samba服务器配置
  3. dbms_stats包更新、导出、导入、锁定统计信息
  4. ubuntu 10.10 添加系统调用的方法
  5. noip2016参赛感想
  6. java 博客系统 tale_Java 博客系统 Tale
  7. ZendFramework-2.4 源代码 - 整体架构(类图)
  8. matlab 读取 Microsoft Excel 电子表格文件不推荐使用 xlsread
  9. 全基因组关联分析(GWAS)常见问题(工具,概念,脚本)
  10. rabbitmq User can only log in via localhost
  11. 基于微信小程序的健身小助手小程序
  12. Ajax介绍和基本使用
  13. 努比亚z11mini 使用 移动物联卡
  14. Feign客户端异常IOException: Incomplete output stream解决方案
  15. 使用tortoisegit clone通过ssh clone远程库:invalid gitfile format: D:\Program Files\TortoiseGit\bin\Tortois“
  16. MAPI错误0x80040107
  17. 【uiautomation】批量给微信好友/群聊发消息
  18. nkd 编译ffmpeg错误: clang is unable to create an executable file. C compiler test failed.
  19. lib vs 生成pdb_pdb文件 VS c++编译
  20. [kuangbin带你飞]专题一 简单搜索D - Fliptile(POJ 3279)

热门文章

  1. oracle中怎样判断数据是否为空,为空赋值,不为空也赋值
  2. C语言: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数,若为素数函数返回值为1,否则为0。在主函数中输入一个整数x,调用函数isprime(x)来判断这个整数x是
  3. 上班第一天的报错(AWVS卸载不彻底)
  4. 海淀服务器维修,服务器维修服务器维修防御升级、数据恢复、对接出错等维修服务...
  5. 第三方开源项目名称_开源名称中有什么?
  6. iphone下拉菜单卡住了_苹果手机怎么下拉菜单 苹果x右上角下拉失灵怎么办
  7. 《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:08 自然语言处理中的机器学习方法
  8. GoBlog轻博客系统
  9. python api接口10060_Python请求错误10060
  10. latex 加入.sty文件