Skip to content

wrk如何压测 #12

@milixie

Description

@milixie

wrk 是一个轻量级的HTTP的压测工具,可以使用 lua 写脚本支持更复杂的压测场景

1.安装
brew install wrk

2.用命令进行压测

wrk -t4 -c1000 -d30s -T30s --latency http://www.douban.com

上面这条命令的意思是:
用4个线程来模拟1000个并发链接,整个测试持续30s
当超过30s后,打印出压测统计信息

备注:
wrk使用的异步非阻塞的io,并不是用线程去模拟并发链接,所以可以不用设置很多的线程,线程数-t的值一般根据CPU的核心数量设置
-c参数(并发连接)必须 大于 -t参数(线程数)

运行结果

Running 30s test @ http://www.douban.com
  4 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    23.50ms    9.61ms 122.58ms   84.80%
    Req/Sec     2.61k     1.03k    4.79k    55.70%
  Latency Distribution
     50%   21.45ms
     75%   26.43ms
     90%   33.33ms
     99%   62.62ms
  312190 requests in 30.10s, 98.85MB read
  Socket errors: connect 754, read 0, write 0, timeout 0
  Non-2xx or 3xx responses: 312190
Requests/sec:  10371.92
Transfer/sec:      3.28MB

Socket errors 表示 socket 错误数量
Requests/sec 表示每秒请求数量(体现并发能力)
Latency Distribution 延迟情况和分布

写一个脚本 test.lua 的脚本文件

wrk.method = "POST"
wrk.body   = "name=mili&age=12"
wrk.headers["Content-Type"] = "application/x-www-form-urlencoded"

命令运行:


wrk -t4 -c1000 -d30s -T30s --script=test.lua --latency http://www.douban.com

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions