性能测试-虚拟机环境安装以及wrk性能测试工具
作者:互联网
1、VMware安装
安装方法:http://t.zoukankan.com/tanghaorong-p-13210470.html
注意不要勾选升级
2、打开ova文件、启动虚拟机,登录后用xshell操作
如下图打开ova文件:
修改虚拟机的存储路径:
导入报错,重试就可以:
导入后再虚拟机配置后再启动虚拟机,网络选择NAT模式,因为是centos系统,该模式好配置
登录成功后,ifconfig获取服务器IP,再用XSHELL操作linux系统,这样比直接再VMware上输入命令要方便很多
3、裸机安装依赖包-git vim gcc wget unzip
# 安装依赖包,全空系统,初始化安装的一些软件 yum install git vim gcc wget unzip -y
4、wrk
4.1 wrk简介
wrk 是一个开源的支持HTTP协议的基准测试工具,它的特点是高并发低损耗,安装部署简单,但是,不适合做多协议及复杂场景的性能测试。
wrk 可以指定持续压测的时间(例如:持续打压30分钟)并且支持 lua 脚本的执行,支持多个URL的压测
4.2 wrk安装
# 使用git下载wrk的源码 git clone https://gitee.com/mirrors/wrk.git # 安装make 防止系统没有make这个命令,make命令进行编译 yum install make -y # 进入wrk目录进行编译 cd wrk # 编译wrk make # 验证 wrk是否安装成功,查看版本 ./wrk -v # 获取wrk的帮助信息 ./wrk --help
4.3 wrk参数说明
- -c, 后面跟数字,代表http连接数
- -d, 后面跟数字,代表持续运行时长
- -t, 后面跟数字,代表启动多少个线程
- -s, 后面跟脚本名称,脚本用lua编写
- -H, 后面跟消息头
- --latency 代表输出响应的详细信息
- --timeout 后面跟设置的超时时长
- -v, 版本信息
4.4 wrk使用、查看对应的线程数-top -H |grep wrk
与连接数netstat -anp |grep '网站ip' |grep ESTABLISHED |wc -l
#参数说明:使用4个线程100个连接,对百度页面进行30s的压测,并要求再压测接口中输入响应延时消息
./wrk -t4 -c100 -d60s --latency https://baidu.com/
参数说明:使用4个线程100个连接,对百度页面进行30s的压测,并要求再压测接口中输入响应延时消息
# 查看线程数 top -H |grep wrk # 查看连接数 netstat -anp |grep '网站ip' |grep ESTABLISHED |wc -l
执行结果如下:
4.5 LUA脚本
# post.lua wrk.method = "POST" wrk.body = "login=***&password=***" wrk.headers["Content-Type"] = "application/x-www-form-urlencoded" wrk -t2 -c6 -d5s -s post.lua https://www.baidu.com
注: 线程数跟 ulimit 有关,centos 默认 ulimit=1024 最大不超过1024个线程,如需更多线程,可以调整 ulimit 值。
4.6 编写脚本批量压测接口(多个接口同时压测)
--以下来自知乎 https://zhuanlan.zhihu.com/p/322365277
1.编写lua脚本 因为接口需要json格式参数,所以首先编写lua脚本,在lua脚本里添加json参数, ff0e_05.lua如下
request = function() local headers = { } headers['Content-Type'] = "application/json" body = '{"uin":"123","lang":"en"}' return wrk.format('POST', nil, headers, body) end
2、编写压测脚本 一个简单的批量压测脚本test.sh:
#!/bin/sh RESULT_DIR="/data/home/yawenxu/wrkTestResult/" luaFileArr="ff0e_00.lua ff0e_02.lua ff0e_05.lua ff0e_06.lua ff0e_07.lua ff0e_08.lua ff0e_10.lua ff0e_11.lua" # 每个接口post需要的json参数的lua文件 concurrency=${1-1} #开启线程数,用于控制速度 count=${2-1} #保持连接数 continueTime=${3-1} # 持续时间 input_file_name=$4 exec_single_wrk(){ if [ -f $1 ];then ./wrk -t $2 -c $3 -d $continueTime --script=$1 --latency --timeout 10 "http://$4" >$RESULT_DIR$1$3"_nginx.txt" 2>&1 & else echo $1" is not exists" fi } exec_loop_wrk(){ for item_name in $luaFileArr do exec_single_wrk $item_name $concurrency $count "http://api.com/xxx" & done } if [ -f $input_file_name ];then exec_single_wrk $input_file_name $concurrency $count & else exec_loop_wrk & fi
这个脚本保证了多个接口同时压测,同时将每个接口的压测报告保存到文件里,便于分析。执行命令sh test.sh 12 5000 10 会一次性生成所有接口的压测报告文件
标签:ff0e,压测,虚拟机,wrk,lua,线程,测试工具,--,性能 来源: https://www.cnblogs.com/shishibuwan/p/16609171.html