01前 言
当你想做性能测试的时候,你会选择什么样的测试工具呢?是会选择wrk?jmeter?locust?还是loadrunner呢?今天,笔者将根据自己使用经验,针对jmeter、locust、wrk和loadrunner常用的性能测试工具进行简单介绍和对比。
首先,四者基本对比图:
| 
 .  | 
 loadrunner  | 
 jmeter  | 
 locust  | 
 wrk  | 
| 
 分布式压力  | 
 支持  | 
 支持  | 
 支持  | 
 不支持  | 
| 
 单机并发能力  | 
 低  | 
 低  | 
 高  | 
 低  | 
| 
 并发机制  | 
 进程/线程  | 
 线程  | 
 协程  | 
 线程  | 
| 
 开发语言  | 
 C/Java  | 
 Java  | 
 Python  | 
 C  | 
| 
 告与分析  | 
 完善  | 
 简单图标  | 
 简单图表  | 
 简单结果  | 
| 
 授权方式  | 
 商业收费  | 
 开源免费  | 
 开源免费  | 
 开源免费  | 
| 
 测试脚本形式  | 
 C/Java  | 
 GUI  | 
 Python  | 
 C  | 
| 
 资源监控  | 
 支持  | 
 不支持  | 
 不支持  | 
 不支持  | 
02wrk
wrk是轻量化的http性能测试工具,采用线程+ 络异步IO模型, 络异步IO可以使得系统使用很少的线程模拟大量的 络连接以增大并发量、提高压力。
优点:
使用方式例如:./wrk -c 1000 -t 8 -d 10s http://www.baidu.com主要包括以下参数:-t(--thread) 需要模拟的线程数-c(connection) 需要模拟的连接数--timeout 超时的时间-d(--duration) 测试的持续时间
缺点:
wrk测试结果输出:
03jmeter
jmeter同样采用线程并发机制,但其主要依靠增加线程数提高并发量,当单机模拟数以千计的并发用户时,对于CPU和内存的消耗比较大。与上述wrk相比,jmeter本身具有以下优点和缺点——
优点:
jmeter聚合 告及表格查看结果:
缺点:
jmeter的GUI模式消耗资源较大,当需要测试高负载时,需要先使用GUI工具来生成XML测试计划,然后在非GUI模式下导入测试计划运行测试,并且关闭不需要的侦听器(收集数据与展示测量的组件),因为侦听器也会消耗掉本用于生成负载的大量资源。测试结束后后,需要将原始结果数据导入GUI以才能查看结果。
04locust
locust是一个简单易用的分布式负载测试工具,主要用来对 站进行负载压力测试。locust使用python语言开发,测试资源消耗远远小于java语言开发的jmeter。且其支持分布式部署测试,能够轻松模拟百万级用户并发测试。与jmeter和wrk相比,locust具有以下优缺点:
优点:
缺点:
locust测试结果:
05总 结
1.我想使用界面操作的形式对我的系统做性能测试,并且希望我的测试数据有个良好的可视化展示方式;
2.我想要对我系统的http rest接口进行性能测试,但是我之前没有进行过任何测试,我不知道我的系统QPS是个什么样的水平;
3.我想对我的系统模拟用户操作进行复杂场景的性能测试;
4.我想测试我的系统在一定QPS情况下,一段时间内的性能指标(cpu消耗、内存消耗等);
5.我想使用匀速请求的方式,对我的系统进行性能测试;
6.我想体验编程的乐趣,自己编写脚本进行性能测试;
或者,just do it by yourself,自己选择编程语言编写性能测试脚本。
06附 录
wrk 使用参数说明:
8核cpu:相同连接数和测试时长条件下,不同线程数对同一系统REST接口测试结果对比图
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!