被面试官经常问到之前开发的系统接口 QPS 能达到多少,经常给不出一个数值,支支吾吾,导致整体面试效果降低?
原因基本是一些公司中,做完功能测试就完了,压根不会有性能测试这一步,或者说并发量较少,没有必要进行性能测试,亦或者,交给测试人员后,只要整体问题不大,测试报告一般也是不会再给后端人员看的,这就导致我们在面试的时候,场面一度尴尬 !!!
其实,不单单是针对面试,作为一名后端开发者,我们在完成一个接口开发后,在交给测试工程师之前,经常也会想知道,自己写的这个接口的性能如何呢?吞吐量能达到多少?QPS(Query per second 每秒处理完的请求数) 能达到多少呢?
这个时候,我们就需要借助一些常用的性能测试工具,如 Apache ab, Apache JMeter (互联网公司用的较多),LoadRunner 等 。
我们今天主要说一说轻量级性能测试工具 wrk 。
目录一、什么是 wrk
二、 wrk 的优势&劣势
- 2.1 优势
- 2.2 劣势
- 3.1 linux 安装
- 3.2 macOS 安装
- 3.3 Window 10 安装
- 3.4 验证一下,是否安装成功
- 4.1 简单使用
- 4.2 wrk 子命令参数说明
- 4.3 测试报告
- 4.4 使用 Lua 脚本进行复杂测试
六、参考文档
七、赠送面试&学习福利资源
一、什么是 wrk摘自官方 GitHub 上的英文介绍:
文章插图
翻译一下:
wrk 是一款针对 Http 协议的基准测试工具,它能够在单机多核 CPU 的条件下,使用系统自带的高性能 I/O 机制,如 epoll,kqueue 等,通过多线程和事件模式,对目标机器产生大量的负载 。
PS: 其实,wrk 是复用了 redis 的 ae 异步事件驱动框架,准确来说 ae 事件驱动框架并不是 redis 发明的, 它来至于 Tcl 的解释器 jim, 这个小巧高效的框架, 因为被 redis 采用而被大家所熟知 。二、 wrk 的优势&劣势2.1 优势在说 wrk 的优势之前,瞅一下 wrk 的 GitHub Star 数,也能侧面反映下它的可靠性:
文章插图
Wow ! 截止笔者截图为止, Star 数已经达到了 19742 !!!
再来说说 wrk 的优势:
- 轻量级性能测试工具;
- 安装简单(相对 Apache ab 来说);
- 学习曲线基本为零,几分钟就能学会咋用了;
- 基于系统自带的高性能 I/O 机制,如 epoll, kqueue, 利用异步的事件驱动框架,通过很少的线程就可以压出很大的并发量;
三、wrk 安装wrk 只能被安装在类 Unix 系统上,所以我们需要一个 Linux 或者 MacOS 环境 。windows 10 安装需要开启自带的 Ubuntu 子系统 。
3.1 Linux 安装3.1.1 Ubuntu/Debian依次执行如下命令:
sudo apt-get install build-essential libssl-dev git -ygit clone https://github.com/wg/wrk.git wrkcd wrkmake# 将可执行文件移动到 /usr/local/bin 位置sudo cp wrk /usr/local/bin
3.2.2 centos / RedHat / Fedora依次执行如下命令:sudo yum groupinstall 'Development Tools'sudo yum install -y openssl-devel git git clone https://github.com/wg/wrk.git wrkcd wrkmake# 将可执行文件移动到 /usr/local/bin 位置sudo cp wrk /usr/local/bin
3.2 MacOS 安装Mac 系统也可以通过先编译的方式来安装,但是更推荐使用 brew 的方式来安装, 步骤如下:- 安装 Homebrew,安装方式参考官网 https://brew.sh (也就一行命令的事);
- 安装 wrk: brew install wrk;
由于笔者使用的是 MacOS, Windows 上的安装步骤,并没有实际操作过,具体安装步骤,您可以参考官方 Windows 10 的安装教程:https://github.com/wg/wrk/wiki/Installing-wrk-on-Windows-10,或者用您喜欢的搜索引擎来搜索 Windows 10 如何启用 Ubuntu 子系统后,再安装 wrk,亦或者通过安装 Linux 虚拟机的方式来使用 wrk 。3.4 验证一下,是否安装成功命令行中输入命令:
推荐阅读
- Nginx+Tomcat搭建高性能负载均衡集群
- 高并发性能测试,it人员必备技能
- Mysql性能优化之逐级优化,开发人员必备技巧
- 数据库读写分离方案,实现高性能数据库集群
- Jmeter分布式部署测试做压力性能测试
- 推荐给专业人士10个渗透测试工具
- 沃尔沃为何号称全球最安全 沃尔沃汽车安全性能是全球最好的汽车?
- PING命令详解,端到端的延时测试工具
- 5个Linux服务器一键综合测试性能和配置脚本工具
- MySql,Mssql,Oracle三种数据库性能优缺点