标签:高性能 pre 切换 提升 使用教程 执行文件 time 分布 优点
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 检查安装是否成功
执行命令:
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 连接的原因。
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
压测结果:
标签:高性能 pre 切换 提升 使用教程 执行文件 time 分布 优点
原文地址:https://www.cnblogs.com/shenh/p/12420878.html