ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

性能测试-虚拟机环境安装以及wrk性能测试工具

2022-08-21 01:30:28  阅读:162  来源: 互联网

标签:ff0e 压测 虚拟机 wrk lua 线程 测试工具 -- 性能


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有