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

安装

# 安装编译工具和下载源码
sudo yum groupinstall 'Development Tools'
sudo yum install -y openssl-devel git 
git clone https://github.com/wg/wrk.git wrk-4.2.0

# 编译
cd wrk-4.2.0
make

# 建立软连接
ln -s /data/wrk-4.2.0/wrk /usr/local/bin



使用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)


简单的压测

简单进行一次压测,用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   +/- Stdev
    Latency    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.76ms
     90%  157.02ms
     99%  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    超时:599

Requests/sec:   4977.65  # QPS 4977.65, 即平均每秒处理请求数为4977.65 
Transfer/sec:      8.04MB # 平均每秒读取 8.04M 的数据

压测结果解释:

Thread Stats

统计结果

Avg

Stdev

Max

+/- Stdev

Latency

响应时间-延迟分布

92.44ms

100.49ms

1.35s

91.97%

Req/Sec

每线程每秒完成请求数

431.84

159.53

1.37k

72.45%

压测脚本

首先需要准备一个 lua 文件,比如名为 test-postapi.lua

### 请求方式
wrk.method = "POST"

### 设置 请求类型
wrk.headers["Content-Type"] = "application/json"

### POST 请求参数
wrk.body  = '{"username": "13999999999","username": "13999999999"}'

模拟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 参数的值为接口地址

 搜集自网络

系统性能的维度

延迟

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

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

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

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

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

吞吐量

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

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

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

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

QPS:每秒处理的请求数

系统容量

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

猜你喜欢

转载自blog.csdn.net/qq_34777982/article/details/127467720
今日推荐