zoukankan      html  css  js  c++  java
  • 性能测试工具 wrk

    一、简介

      WRK 是一款针对HTTP基准测试工具,即使在单个多核CPU上运行时,也能够对目标机器产生大量负载。原因是它使用了一些操作系统特定的高性能 io 机制, 比如 select, epoll, kqueue 等。其实它是复用了 redis 的 ae 异步事件驱动框架。说说 wrk 的优缺点吧:

    优点:单机并发能力强,极少的线程数即可模拟大量的并发请求。

    缺点:不支持分布式,对于上万用户的并发测试显得力不从心。lua 脚本学习成本较高。

    二、安装

     执行以下命令:

    git clone https://github.com/wg/wrk.git
    cd wrk
    make
    cp wrk /usr/local/bin           # 将可执行文件移动到 /usr/local/bin ,方便调用

     输入 wrk -v 检查安装是否成功

    三、测试

     一、get 请求

     执行命令:

    wrk -t12 -c100 -d10s --timeout=30s --latency https://www.baidu.com

     这条压测命令代表:12个线程 100个 tcp 持续对 https://www.baidu.com 压测10s,超时时间为30s

    压测结果:

     wrk 各项参数详解:

    -c, --connections       # tcp 连接数
    -d, --duration          # 压测持续时间
    -t, --threads           # 线程数
    -s, --script            # 指定 lua 脚本
    -H, --header            # 为每个HTTP请求添加 hearder
         --latency          # 压测结束后,打印延时统计信息
         --timeout          # 超时时间
    -v, --version           # 打印 wrk 详细信息 

     注意:线程数不易设置的过高,官方建议一般为 CPU 核心数的2到4倍最佳,高了会因频繁切换线程而降低效率。wrk 不是一个连接对应一个线程的模型,而是通过异步网络 io 提升并发量,也就说是一个线程能管理创建多个 tcp 连接。这就是 wrk 为什么足够轻量级,但却可以模拟出大量 tcp 连接的原因。

    二、 post 请求

     wrk 支持 lua, post 请求压测需要借助 lua 脚本,编写脚本,保存 .lua 格式文件

    wrk.method = "POST"
    
    wrk.headers["Content-Type"] = "application/json"
    
    # 需要传的参数
    wrk.body = ""

    执行压测命令:

    wrk -t2 -c10 -d5s --timeout=30s --latency  -s post.lua https://xxx.xxx.xxx

    压测结果:

  • 相关阅读:
    【二分】Pair of Topics
    【Windows】制作登录界面
    【Windows】制作文本框
    【windows】制作幸运“Tiger”机
    【python】函数
    SPOJ 3267 DQUERY
    CF 570D Tree Requests
    UVa 11809 Floating-Point Numbers
    Luogu P5098 Cave Cows 3
    GHOJ 428 未出现的子串
  • 原文地址:https://www.cnblogs.com/shenh/p/12420878.html
Copyright © 2011-2022 走看看