学习
实践
活动
专区
工具
TVP
写文章
专栏首页CSIG质量部压测团队业界常用压测工具/平台对比
原创

业界常用压测工具/平台对比

压测工具/平台是什么?

压测,即压力测试,作用是对各种服务对象进行压力测试以获得该服务处于或超过预期负载时系统的运行情况,进而判断系统在峰值负载或超出最大负载情况下的处理能力。

压测工具,顾名思义,就是用来进行压力测试的工具,常用的有ab、jmeter、LoadRunner和wrk等等。

而由于在整个压测过程中存在以下问题:

  • 时间成本:每次测试都需要重新搭建一套生产环境,成本太高,且几乎每个环节都需要人力支撑
  • 数据成本:脚本、测试数据、压测机器、测试报告无法沉淀
  • 风险成本:测试用例多,生产压测缺乏平台流程管理,手工执行非常容易出错
  • 自动化问题:自动化性能基线无统一平台支撑,测试过程中靠手动监控,覆盖不全且定位问题困难

为了解决以上这些问题、更好地满足自己/用户的压测需求,不少企业在开源压测工具的基础上进行二次开发,将压测流程管控、压测任务管理和自动化性能基线等功能整合在一起,形成一个可以支撑各种个性化压测需求的分布式业务系统,也就是压测平台。

本文主要讲什么?

用户在挑选压测平台时,一般都会关心几个问题,一是压力能不能稳定打上去,达到用户的需求;二是进行压测的成本有多高,例如操作成本、学习成本、资源成本等;有些用户可能还会有对于报告输出的要求。也就是说,对于压测平台,我们最关心两个个问题:

  • 该工具/平台是否可以满足自己的测试需求?
  • 该工具/平台能否稳定提升压力到指定水平?
  • 该工具/平台的压测成本有多高?

工具/平台间的对比

在这里进行对比的平台/工具有阿里云的性能测试平台PTS、华为云的性能测试服务CPTS、睿象云的云压力测试平台CPT这三款云压测平台以及k6Apache JMeter这两款压测工具。

为什么挑选它们? 因为这三家压测平台都接受个人用户在其平台上进行压测,而像腾讯云的WeTest压测大师、数列科技的ForceCop和压测宝等一些云压测平台则暂时只接受企业用户进行压测,定价与服务也是依据企业用户的自身情况进行定制的,个人无法评测。 而这两款压测工具,一款是更大众的JMeter,另一款是新兴的测试工具k6。

1. 该工具/平台是否可以满足自己的测试需求?

我们来对比各个工具/平台支持的协议有哪些,如下表

压测工具/平台

支持的协议

性能测试平台PTS

HTTP、HTTPS、WebSocket、TCP、UDP、Dubbo、Mqtt

性能测试服务CPTS

HTTP、HTTPS、TCP、UDP

云压力测试平台CPT

HTTP、HTTPS、Socket、WebSocket、Mqtt

JMeter

HTTP、FTP、JDBC、SOAP、LDAP、TCP、JMS、SMTP、POP3、IMAP

K6

HTTP 1.1、HTTP 2、WebSockets、gRPC、SOAP、REST

2. 该工具/平台能否稳定提升压力到指定水平?

对于云压测平台来说,由于本指标中的“稳定”不太好评价,以及这些平台的官方文档一般都有说明自己所能达到的最大并发,于是我去对比了这些平台的价格,也就是说,我们对比的是想要达到某个程度的并发,用户需要花费多少钱?

性能测试平台PTS(阿里云)

套餐详情:

性能测试服务CPTS(华为云)

套餐详情:

云压力测试平台CPT(睿象云)

套餐详情:

通过上面的数据,可以得出下表

单位

阿里云PTS

华为云CPTS

睿象云CPT

元/10万VUM/一年

3336

100

3996

以此来看,华为云的服务是最经济的选择。

而对于压测工具来说,一般有以下两个指标可以进行对比

  • 在运行测试时消耗的资源是多少?
  • 在相同配置下,压测工具能支持多少并发?

也就是说,我们需要考虑压测工具产生并发时所需要的资源成本是多高,以及可以产生多少并发。

1. 消耗的资源

JMeter远比k6要更消耗资源,它往往需要多个负载生成器来生成负载,并且它需要更高的内存。在比较中,JMeter占用了760 MB的内存,而k6占用了256 MB的内存。

来源: Rafaela Azevedo

来源: Rafaela Azevedo

k6是用go语言编写的,go语言是一种编译型语言,不像Java那样需要先解释再运行,也就是说go本身就是以性能为目标构建的。

对于压测工具来说,产生并发最简单也最常见的方法是将一个虚拟用户分配给一个内核或者一个线程,这个方案有个缺陷:当虚拟用户正在等待响应或者执行sleep()时,该线程也被阻塞而无法处理其他工作。

在k6中,每个虚拟用户都在goroutine上而不是线程上运行,goroutine被Go Scheduler控制,它通过允许“工作窃取(work stealing)”和线程之间的工作交换,重新利用空闲线程并智能地分配工作,以此来提高总体性能,并显著降低内存利用率。一个运行k6的线程不会超过100 kb,但像JMeter这样的JVM线程默认使用1 MB内存,会给堆带来巨大压力。

——来自Comparing k6 and JMeter for load testing

2. 产生的并发

根据文档来看,JMeter平均可以达到1000左右的并发,如果需要更高的并发则需要设置分布式的JMeter测试;但是如果给k6相同的资源,k6可以产生数以万计的并发。这有几个原因,一是因为k6所占用的内存更低,所以它可以运行更多并发并产生更高的负载,二是k6处理硬件资源的方式与其他负载工具不同,单个k6进程可以有效地利用所有CPU内核;总的来说,k6的单个实例可以产生30000-40000个并发。

3. 该工具/平台的压测成本有多高?

在这里大致把压测成本细分为

①学习成本:指第一次接触该工具/平台到可以熟练使用所需要的时间

  • 安装是否简单
  • 有无外部依赖
  • 社区支持是否丰富

②操作成本:指该工具/平台的操作是否简单,可否通过插件拓展新的功能

  • 脚本语言
  • 编写脚本是否简单
  • 维护是否简单
  • 插件支持

功能\工具

PTS(阿里云)

CPTS(华为云)

CPT(睿象云)

JMeter

k6

安装简单

-

-

-

否,需要提前安装Java

外部依赖

-

-

-

Java

费用

☆☆☆☆

☆☆

☆☆☆☆☆

免费

免费

支持脚本

jmx、json、yaml

jmx、json

-

jmx

JavaScript

脚本编写方式

GUI设置、上传脚本文件

GUI设置、上传脚本文件

GUI设置、上传脚本文件

GUI设置

代码编写

维护难易

难,脚本冗长

中,脚本简洁

插件支持

-

-

-

插件丰富

可用插件不多

支持分布式测试

否(可通过付费服务支持)

测试可以监控

是,添加监听器

否(可通过付费服务支持)

面向人群

对测试人员友好

对测试人员友好

对测试人员友好

对测试人员友好

对开发人员友好

社区丰富程度

☆☆☆

☆☆☆

☆☆

☆☆☆☆☆

☆☆☆☆

不同工具/平台的优势

不同的工具/平台肯定会有自己的优势以及特点,下面展开阐述一下

  • 价格低到高排序:JMeter & k6、CPTS(华为云)、PTS(阿里云)、CPT(睿象云)
  • 操作简单到复杂排序:PTS(阿里云)& CPTS(华为云)、JMeter、k6、CPT(睿象云)

注:睿象云的操作是最复杂的,虽然有UI界面,但是其设计不太人性化,例如说上传脚本的功能,在用户上传脚本失败后也不提示系统需要什么格式的脚本。而对比之下,其他的工具/平台都是你可以通过自己摸索就能完成基本操作的。

  • 社区丰富程度高到低排序:JMeter、k6、PTS(阿里云)、CPTS(华为云)、CPT(睿象云)

对于压测工具来说:

  • JMeter的特点有
    • 使用UI界面,对测试人员友好
    • 可以执行复杂的压测场景,包括不同的协议
    • 可以为每个测试编写完整的场景
    • 可以用一种经济有效的方式进行分布式压测
    • 可以利用监听器内置预先准备好的报告
    • 有一个拥有大量文档的成熟社区
  • k6的特点有
    • 安装速度极快,不需要其他依赖项
    • 可以最大化性能和效率
    • 所需要的内存空间少
    • 脚本是纯代码,可以减少二义性
    • 可以进行版本控制,以便团队可以更容易在脚本上进行协作

对于压测平台来说:

  • 阿里云PTS的特点是它的社区文档丰富,但是价格较高
  • 华为云CPTS的特点是价格较低,可满足主要压测需求
  • 睿象云CPT的特点是它主要提供运维服务,压测服务可与旗下的其他产品(如告警与监控服务)搭配使用,但价格也比较高

参考资料

Load tests: Jmeter vs K6

Comparing k6 and JMeter for load testing

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

登录 后参与评论
0 条评论

相关文章

  • 常用压测工具

    webbench 是常用的网站压力测试工具,webbench用C语言编写,代码仅有区区几百行。

    windealli
  • mysql常用性能压测工具mysqlslap

    公众号: 云原生生态圈
  • 压测工具平台案例库

    使用http cookie manager获取登陆接口响应头中的cookie值,cookie引用变量名正确,但获取到的cookie没有生效,接口仍然报错401

    谭银
  • jmeter/k6/locust 压测工具对比(暂未完成)

    常用的压测工具有 jmeter,locust,k6,每个工具的架构以及实现的差异导致在使用体验上也存在很多的差异,不同的工具都有着自己独特的特性和优缺点。

    历久尝新
  • 压测工具swingbench和sysbench对比(r12笔记第13天)

    今天来说说两款压测工具sysbench,swingbench,早些时候傻傻分不清楚,其实两个差别大了去了。 swingbench 先来说说swingb...

    jeanron100
  • 【必看】社区文章目录

    Nanako
  • 社区精华文章目录

    cailynyu
  • 腾讯TMQ在线沙龙回顾|性能测试

    腾讯移动品质中心TMQ
  • 美团点评酒店后台故障演练系统

    本文由曾鋆、海智、亚辉、孟莹四位作者共同创作完成。 背景介绍 随着海量请求、节假日峰值流量和与日俱增的系统复杂度出现的,很有可能是各种故障。在分析以往案例时我...

    美团技术团队
  • 恒丰银行 I MySQL MGR与Galera性能测试买家秀

    作者介绍: 赵守斌,十年银行业数据库管理经验,熟悉各种Oracle数据库系统方案,对MySQL开源数据库也有涉猎。目前牵头负责恒丰银行数据库管理和各类数据库服务...

    数据和云
  • 恒丰银行 I MySQL MGR与Galera性能测试买家秀

    作者介绍: 赵守斌,十年银行业数据库管理经验,熟悉各种Oracle数据库系统方案,对MySQL开源数据库也有涉猎。目前牵头负责恒丰银行数据库管理和各类数据库服务...

    数据和云
  • Coding与TCPS平台的对比——TCPS平台指南系列

    Coding平台是大家比较常用以及熟悉的压测方式,本文的目的是将coding平台与TCPS平台在操作成本和压测结果等方面上进行对比,让大家对TCPS平台有更直观...

    Nanako
  • AMD机型云服务器内存性能压测细节分享

    标准型 SA机型基于腾讯云自研星星海服务器,提供可靠、安全、稳定的高性能,采用最新一代 AMD EPYCTM 处理器的实例,提供多种规格,具有超高性价比。此实例...

    云计算_客服
  • 性能利器Takin来了!首个生产环境全链路压测平台正式开源

    6月25日,国内知名的系统高可用专家数列科技宣布开源旗下核心产品能力,对外开放生产全链路压测平台产品的源代码,并正式命名为Takin。

    老_张
  • 腾讯大数据平台质量保障之道

    引言: 大数据时代,业界各巨头都在投入重兵打造自己的大数据平台,分析挖掘蕴藏在数据金矿中的价值。在腾讯,数平承建了公司级大数据平台,我们的测试团队也有幸...

    腾讯大数据
  • 《阿里测试之道》第四章笔记

    4.1.2 大数据应用的技术质量体系综述 1 离线工程系统的测试验证工作,即算法测试

    小老鼠
  • 大促千万级流量来袭前,我们都在做什么?

    压测是目前科技企业及传统企业进行系统容量评估、容量规划的最佳实践方式,本文将基于京东ForceBot平台在大促(京东618、京东双11)备战中的实践历程,给大家...

    京东技术

扫码关注腾讯云开发者

领取腾讯云代金券