基准测试工具 Wrk 的使用
基准测试工具 Wrk 的使用
背景
wrk is a modern HTTP benchmarking tool capable of generating significant load when run on a single multi-core CPU.
Wrk 是一个轻便、高性能的、基于 C 编写的 HTTP 基准测试工具。使用它能轻松对 Web 端口进行一系列压力测试。
安装
Wrk 只能在类 Unix 系统下安装,Windows 用户建议使用 WSL。以下以 Ubuntu 为例。
编译工具/环境安装
确保安装以下包:
1 | sudo apt install git |
安装 Wrk
在希望安装 wrk 的目录中,执行:
1 | git clone https://github.com/wg/wrk.git |
make 操作耗时相对较长,需要耐心等待。完全安装完成后,在 wrk 目录下就能看见一个叫做 wrk
的可执行文件。此时即安装完成
基本使用
命令一览
查看 wrk 帮助信息,了解能够使用的指令及其含义
1 | [root@localhost wrk]# ./wrk |
一个例子
在一个开源项目中,我用 wrk 来测试 kafka 的两种 Python 客户端的性能。我使用命令 ./wrk -t36 -c4000 -d30s --latency http://<server host>/cat
在相同环境下对两个采用不同 kafka 客户端的 Python FastAPI 端口进行压力测试。
-t
: 由于是网络 IO 密集型测试,我采用服务器 CPU 核心数量(12 个)三倍的线程数量-c
: 一般来说,HTTP 连接数为线程数量的 100 倍,此处我简单设置为 4000 个 HTTP 连接。-d
: 我将测试持续时间设置为 30 秒--latency
: 输出响应时间/延迟的分部情况
我分别得到了以下两个输出:
kafka-python: 一个纯 Python 编写的 kafka 客户端
1 | [root@localhost wrk]# ./wrk -t36 -c4000 -d30s --latency http://10.3.242.223:8087/cat |
confluent-kafka-python: 一个基于 C kafka 库的 Python kafka 客户端
1 | [root@localhost wrk]# ./wrk -t36 -c4000 -d30s --latency http://10.3.242.223:8086/cat |
可以看到,尽管二者在响应延迟上相差无几。但在网络吞吐量上, confluent-kafka-python 的性能是 kafka-python 的二倍以上。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Alrisha!