文章

性能测试工具 wrk 实践

在后端开发的日常工作中,我们常常需要对接口进行调试,确保它们在正常情况下能正确响应请求。然而,单纯的单次运行用例往往不能模拟系统在真实环境下接收到大流量时的表现。因此,为了确保系统在面对大规模访问时的稳定性和性能,我们需要模拟更大的访问量,从而排查潜在的隐性 bug,并找出可能的优化点。

通过进行压力测试(压测),我们能够更准确地评估系统在高负载下的表现,进而有针对性地进行性能优化。

本文将介绍一款轻量级的 HTTP 压测工具——wrk,它能帮助我们进行高效的压力测试,并分析系统在大并发情况下的响应情况。

wrk 的优势

市面上有很多常用的压测工具,比如 JMeter、Apache Benchmark 等,为什么我们要选择 wrk 呢?我认为 wrk 具有以下几个明显的优势:

  • 轻量化:wrk 是一个非常轻量的工具,能够在较少的资源消耗下进行高效的压力测试。

  • 部署轻松:wrk 的安装与配置过程相对简单,支持快速部署和使用。

  • 高性能:wrk 采用了 I/O 多路复用机制,这使得它能够在不需要大量线程的情况下实现高并发,类似 Redis 的实现方式。这样不仅提高了压测的效率,还降低了资源的消耗。

wrk 安装

wrk 目前只支持在 Linux 环境下运行。如果你使用的是 Windows 系统,可以借助 WSL(Windows Subsystem for Linux)来实现 Linux 环境。详细的设置方法可以参考我的另一篇文章:

https://www.nxx.nx.cn/archives/wsl-an-zhuang-yu-guan-li-windows-shang-de-linux-zi-xi-tong

安装 wrk 非常简单,使用以下命令即可:

sudo apt install wrk

安装完成后,你可以使用 wrk --help 查看可用的命令及其选项。

wrk 使用示例

安装完成后,我们可以尝试运行以下命令:

wrk -t 8 -c 200 -d 10s --latency "http://www.bing.com"

这条命令的含义是:使用 8 个线程,以 200 的并发量对 Bing 进行 10 秒的压测,并输出延迟数据。

结果解读

压测结果可以分为三个部分:

  1. 单线程结果:每个线程的表现,主要关注最低和最高延迟。例如,某次压测的结果可能会显示最低延迟为 12.99ms,最高延迟为 239.43ms,波动较大,但都没有超过 1 秒,处于可接受范围内。

  1. 延迟分布(Latency Distribution):这是最有参考价值的部分,它展示了不同百分位的延迟情况。例如,某次压测可能显示 99% 的请求延迟都在 19.60ms 以下,意味着绝大多数请求的延迟都较低。

  1. QPS(查询每秒)等性能指标:这是衡量系统处理能力的核心指标,显示了系统在并发压力下的吞吐量和性能瓶颈。

总结

通过使用 wrk 这样的轻量化压测工具,我们能够高效地模拟高并发环境,快速发现系统性能瓶颈和潜在的优化点。虽然 wrk 已经是一个非常强大的工具,但它只是性能测试的一部分,未来我会继续深入学习 wrk,探索更多高级的用法,并带来更多关于性能优化和压测的实践分享。

希望这篇分享能为你带来启发!如果你有任何问题或建议,欢迎在评论区留言,与我共同交流探讨。

License:  CC BY 4.0