其他分享
首页 > 其他分享> > 性能测试-虚拟机环境安装以及wrk性能测试工具

性能测试-虚拟机环境安装以及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参数说明

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