vegeta压测使用
vegeta是一个HTTP压力测试工具,使用Go编写,用命令行交互,并且可以生成汇总和图表作为结果分析。 https://github.com/tsenart/vegeta 基本使用 详细使用方式可以参考README里的内容。可以分为两种方式使用:命令行交互和作为库引入Go程序。我这边使用了brew安装了vegeta,整个测试过程是使用Go编写了一个脚本来进行测试,具体可以参考代码片段 我并没有使用库的形式来引入,而是使用exec.Command()函数来执行命令行。 具体使用到的vegeta命令 attack: 调用API的命令,rate代表每秒调用次数,duration表示调用几秒,body指的是post请求的请求体,name是指为这次测试命名「可不填」,tee是生成bin原始文件「类似raw格式照片,可以用bin转换成很多别的格式」,report是生成报告,这里是在命令行输出。 echo "POST http://172.17.1.36:30898/hello" | vegeta attack -rate=2000 -duration=1s -body=query.json -timeout=0 -name=hello | tee ./result/results-null.bin | vegeta report 生成报告文件,这里是根据bin原始文件生成txt文件 vegeta report -type=text results-query.bin > repost.txt 生成分析图表,使用plot可以生成可交互的图表,需要将多个结果合并到一个图表的时候需要注意,在使用第一个命令的时候务必加上-name参数为其命名。 vegeta plot results-null.bin results-sleep.bin results-query.bin > plot-all.html 测试场景 使用Java和Go编写两个REST服务,分别测试3个API,在k8s中单副本和5副本的情况。API信息如下: 直接返回 sleep 2秒再返回 查询Elasticsearch的10000条数据,每条数据500字节 Elasticsearch集群信息 节点数量:2 版本:7.4.1 CPU:8个Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz,每个1 core 内存:31G Kubernetes信息 版本:1.16.15 节点数量:7「1 master, 6 worker」 指定Deployment调度到同一个节点,两个Deploymnet都分配了2G的内存 测试步骤 将Go脚本打包好后,在同目录下创建配置文件config.ini [address] null = "POST http://172.17.1.36:30898/hello" sleep = "POST http://172.17.1.36:30898/sleep" query = "POST http://172.17.1.36:30898/es" [param] rate = 2000 其中address指的是要调用的API地址和方法,rate指的是每秒调用的次数「我这里是只调用了1s」 ...