一般我们压测的时候,需要了解衡量系统性能的一些参数指标,比如。

1、系统性能的维度

1.1 延迟

简单易懂。green:一般指响应时间

95线:P95。平均100%的请求中95%已经响应的时间

99线:P99。平均100%的请求中99%已经响应的时间

平均响应时间:所有请求的平均响应时间

最大响应时间:所有请求中最大的响应时间

1.2 吞吐量

简单易懂。green:即每秒处理的请求数量

对于查询搜索类的系统使用每秒处理的请求数(QPS)来衡量吞吐能力

一般对于交易类的系统使用每秒处理的事务数(TPS)来衡量吞吐能力。

TPS:每秒处理的事务数(比如每秒处理的订单数)

QPS:每秒处理的请求数

1.3 系统容量

也叫做设计容量,可以理解为硬件配置(内存,cpu什么的),成本约束

2、压测工具 wrk

wrk 是一款针对 Http 协议的基准测试开源工具,它能够在单机多核 CPU 的条件下,使用red:系统自带的高性能 I/O 机制,如 epoll,kqueue 等,通过多线程和事件模式,对目标机器产生大量的负载。

wrk 目前仅支持单机压测,后续也不太可能支持多机器对目标机压测,因为它本身的定位,并不是用来取代 JMeter, LoadRunner 等专业的测试工具,wrk 提供的功能,对我们后端开发人员来说,应付日常接口性能验证还是比较友好的。

wrk 只能被安装在类 Unix 系统上,所以我们需要一个 Linux 或者 MacOS 环境。Windows 10 安装需要开启自带的 Ubuntu 子系统。

2.1 Linux 安装

2.1.1 Ubuntu/Debian

sudo apt-get install build-essential libssl-dev git -y
git clone https://github.com/wg/wrk.git wrk-4.2.0

上面两步是下载安装包的步骤,你也可以直接下载到本地后上传再解压

tar -xvf wrk-4.2.0.tar.gz
cd wrk-4.2.0
make
# 将可执行文件移动到 /usr/local/bin 位置,或者设置一个软连
# sudo cp wrk /usr/local/bin
ln -s /data/wrk-4.2.0/wrk /usr/local/bin

2.2.2 CentOS / RedHat / Fedora

sudo yum groupinstall 'Development Tools'
sudo yum install -y openssl-devel git
git clone https://github.com/wg/wrk.git wrk-4.2.0

上面三步是下载安装包的步骤,你也可以直接下载到本地后上传再解压

tar -xvf wrk-4.2.0.tar.gz
cd wrk-4.2.0
make
# 将可执行文件移动到 /usr/local/bin 位置,或者设置一个软连
# sudo cp wrk /usr/local/bin
# 或者设置一个软连也可以,两种方法自行选择。
ln -s /data/wrk-4.2.0/wrk /usr/local/bin

2.2 MacOS 安装

Mac 系统也可以通过先编译的方式来安装,但是更推荐使用 brew 的方式来安装, 步骤如下:

安装 Homebrew,安装方式参考官网 https://brew.sh (也就一行命令的事);

安装 wrk: brew install wrk;

3、使用 wrk

使用方法: wrk <选项> <被测HTTP服务的URL>
使用方法: wrk <选项> <被测HTTP服务的URL>                            Options:                                            -c, --connections <N>  跟服务器建立并保持的TCP连接数量  -d, --duration    <T>  压测时间           -t, --threads     <N>  使用多少个线程进行压测   -s, --script      <S>  指定Lua脚本路径       -H, --header      <H>  为每一个HTTP请求添加HTTP头      --latency          在压测结束后,打印延迟统计信息   --timeout     <T>  超时时间     -v, --version          打印正在使用的wrk的详细版本信息<N>代表数字参数,支持国际单位 (1k, 1M, 1G)<T>代表时间参数,支持时间单位 (2s, 2m, 2h)

3.1 命令简单的压测

简单进行一次压测,用10个线程,200个连接,对百度进行30s的压测。以下是对压测结果

wrk -t 10 -c 200 -d 30s --latency  http://www.baidu.com
# 结果如下:
Running 30s test @ http://www.baidu.comm/
# 30s内测试百度的结果12 threads and 400 connections# 用12个线程 400个连接测试Thread Stats   Avg      Stdev     Max   +/- StdevLatency    92.44ms  100.49ms   1.35s    91.97%Req/Sec   431.84    159.53     1.37k    72.45%# 用表格解释Latency Distribution# 响应时间-延迟分布明细50%   64.42ms # 有50%的请求执行时间是在64.42ms内完成75%   87.76ms90%  157.02ms99%  581.42ms # 有99%的请求执行时间是在581.42ms内完成149798 requests in 30.09s, 241.85MB read# 30秒内功处理了 149798 个请求,读取了 241.85MB 的数据Socket errors: connect 0, read 16, write 0, timeout 599# 错误:连接错误:0   读错误:16   写错误:0    超时:599Requests/sec:   4977.65  # QPS 4977.65, 即平均每秒处理请求数为4977.65
Transfer/sec:      8.04MB # 平均每秒读取 8.04M 的数据

压测结果解释:

3.2 编写压测脚本

首先需要准备一个 lua 文件,比如名为 test-postapi.lua ,写入如下内容。

### 请求方式
wrk.method = "POST"### 设置 请求类型
wrk.headers["Content-Type"] = "application/json"### POST 请求参数
wrk.body  = '{"username": "13999999999","username": "13999999999"}'

这个文件内容自己写,写好接口内容后保存。

3.3 执行脚本

以下是模拟6个线程,600个连接,在60s内,间隔6s 执行 test-postapi.lua 脚本的请求

# 进入wrk执行文件目录
./wrk -t6 -c600 -d60s --script=test-postapi.lua --latency http://api.xxxdev.com/enterprise/user/login# --script 参数的值为脚本名
# --latency 参数的值为接口地址

资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

性能压测工具:wrk相关推荐

  1. linux系统单机性能压测工具Wrk —— 筑梦之路

    安装 # 安装编译工具和下载源码 sudo yum groupinstall 'Development Tools' sudo yum install -y openssl-devel git git ...

  2. Linux下性能压测工具WRK,性能测试神器 wrk 使用教程

    wrk 是一个类似 ab(apache bench).jmeter 的压力测试工具,底层基于 epoll 和 kqueue 实现,能充分利用 cpu 资源,降低测试工具本身性能开销对测试结果准确性的影 ...

  3. Http压测工具wrk使用指南【转】

    用过了很多压测工具,却一直没找到中意的那款.最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好. 安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持 ...

  4. 技术丨压测工具wrk和Artillery的比较

    本文作者:Linkflow首席架构师 – 王鼎,11年软件研发经验,6年SaaS(基于公有云或私有云),熟悉ERP, CDP, omin渠道销售解决方案.参与SaaS产品的大型开发,成员400余人.在 ...

  5. 压测工具wrk和Artillery的比较

    这两天抽空使用了一下两款压测工具 wrk Artillery 并且通过两款工具对产品的两个环境进行了测试 工具比较 wrk wrk自身性能就非常惊人,使用epoll这种多路复用技术,所以可以用少量的线 ...

  6. 性能压测工具选型对比

    本文是<Performance Test Together>(简称PTT)系列专题分享的第二期,该专题将从性能压测的设计.实现.执行.监控.问题定位和分析.应用场景等多个纬度对性能压测的全 ...

  7. Mark - HDFS性能压测工具

    引言 Hadoop生态圈的基石有两个,一个是HDFS文件系统,一个是MR编程框架.第一弹中提到应用MR编程框架实现大规模多机联合负载压测场景的方案,则突出了MR的能力,实际上HDFS作为这一切的基础, ...

  8. HDFS性能压测工具

    转载地址:http://www.taobaotest.com/blogs/2517 引言 Hadoop生态圈的基石有两个,一个是HDFS文件系统,一个是MR编程框架.第一弹中提到应用MR编程框架实现大 ...

  9. Oracle的学习心得和知识总结(十八)|Oracle数据库性能压测工具swingbench的安装和使用及AWR ASH ADDM报告生成

    目录结构 注:提前言明 本文借鉴了以下博主.书籍或网站的内容,其列表如下: 1.参考书籍:<Oracle Database SQL Language Reference> 2.参考书籍:& ...

最新文章

  1. android实现分类搜索功能,android应用中的搜索功能怎么实现的
  2. 白话Elasticsearch45-深入聚合数据分析之易并行聚合算法,三角选择原则,近似聚合算法
  3. vue拖动改变模板_可视化拖拽 UI 布局之拖拽篇
  4. 存储过程双层循环_mysql嵌套存储过程实现循环嵌套
  5. clion修改选中行的背景颜色
  6. art-template入门(五)之模板变量
  7. openjdk 使用_如何在OpenJDK中使用ECC
  8. redis key失效的事件_《分享几道高频 Redis 高频面试题,面试不用愁》
  9. 前端学习(2604):增加响应头可以获取数据
  10. 正确评估SQL数据库性能,你必须知道的原理和方法!
  11. python爬虫从入门到放弃-python爬虫从入门到放弃(三)之 Urllib库的基本使用
  12. 用单片机测量流体流速的_沟渠流量测量系统宝山哪家质量好广州顺仪品牌
  13. GBase 8a 报错gbase_forward_result failed to write result for client
  14. 操作系统的作用及类别
  15. 知识图谱简介(一)——相关概念
  16. SpringBoot整合redis,启动提示错误信息: An exception was thrown by org.redisson.misc.RedissonPromise$$Lambda$682
  17. Python Cannot open E:\Python36\Scripts\pip-script.py
  18. doodoo.js配置教程
  19. bert-textcnn实现多标签文本分类(基于keras+keras-bert构建)
  20. vue简易微前端项目搭建(一):项目背景及简介

热门文章

  1. Routerboard/DR6018CV01-wifi6-Qual-IPQ6010-IPQ6018-FAMILY-2T2R-2.5G-ETH-port-supporting-5G-cellua
  2. 可汗学院创始人:GPT-4 将如何改变教育行业?
  3. Windows磁盘克隆软件推荐
  4. 59 条搞笑但却真实无比的编程语录
  5. 14、课程总结与回顾
  6. 在js中让一个text输入框的默认日期是今天
  7. uchome工作笔记--添加微新闻功能
  8. citra linux安装教程,Citra3ds模拟器配置需求说明
  9. 华为主题引擎怎么下载_华为主题动态引擎2.0.57app_华为主题动态引擎手机版下载...
  10. c 语言ax什么意思,微机原理与接口技术_期末复习题(1)概要