专栏首页云原生压测团队业界常用压测工具/平台对比
原创

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

压测工具/平台是什么?

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

压测工具,顾名思义,就是用来进行压力测试的工具,常用的有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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • API自动化测试平台,RestCloud测试效率更高效

    RestCloud API自动化测试平台,全Web场景化测试,可以对API进行编排实现复杂的测试场景、实现对API的自动化测试,并根据测试结果输出测试报告,全面...

    用户8905905
  • API自动化测试平台,无需jmeter即可压测

    API自动化测试平台能解决传统API开发过程中面临测试效率不高、回归测试工作量大、不同团队使用不同的API测试工具进行测试等问题。RestCloud完全自主研发...

    用户8905905
  • API测试平台,全程自动化测试

    API自动化测试平台可以对相关业务领域的API按照一定的业务逻辑进行编排然后进行自动化测试,可以完成非常复杂的API测试场景。RestCloud API自动化测...

    用户8905905
  • 性能利器Takin来了!首个生产环境全链路压测平台正式开源

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

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

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

    京东技术
  • 04丨JMeter和LoadRunner:要知道工具仅仅只是工具

    做性能测试工作的人总是离不了性能测试工具,但当我们刚开始接触这类工具或者压测平台的时候,总是难免处在一种顾此失彼,焦虑又没想法的状态。

    软测小生
  • 【新手必读】关于压力测试不得不说的二三事

    软件测试如果按照是否查看代码分类,则可分为白盒测试、黑盒测试以及灰盒测试三类,其中黑盒测试又可分为功能测试与性能测试。我们这里主要探讨性能测试中的压力测试,而性...

    Nanako
  • 「性能测试实战30讲」之问题问答整理四

    今天的内容有点多,我提几个思考题,你就当是对文章的回顾吧。你觉得企业选择性能工具应该考虑哪些方面呢?以及性能测试工具中是否必须做监控呢?

    高楼Zee
  • 算法SOTA、功能全面、性能最佳,PaddleDetection 2.0重磅升级!

    目标检测技术作为视觉技术届的顶梁柱,不仅单兵作战在人脸、车辆、商品、缺陷检测等场景有出色的表现,也是文本识别,图像检索、视频分析、目标跟踪等复合技术的核心模块,...

    用户1386409
  • 日新进用户200W+,解密《龙之谷》手游背后的压测故事

    作者吴雁林,腾讯高级测试开发工程师,5年服务器测试经验,曾负责保卫萝卜3,龙之谷服务器性能测试

    WeTest质量开放平台团队
  • 日新进用户200W+,解密《龙之谷》手游背后的压测故事

    本文记录了《龙之谷》手游压测过程中的点点滴滴,希望给其他手游的压测提供思路、方法和工具的借鉴。

    WeTest质量开放平台团队
  • 性能基础之全链路压测知识整理

    基于实际的生产业务场景、系统环境,模拟海量的用户请求和数据对整个业务链进行压力测试,并持续调优的过程

    高楼Zee
  • 关于性能测试平台的一些想法

     最近刚入职新公司,忙着适应公司的文化、工作流程的一些东西。因为部门要开发性能测试管理平台,今天邮件中我也对性能测试平台的设计提了一些自己的想法。

    小老鼠
  • 腾讯开源微服务 TARS 接口测试揭秘

    Tars是将腾讯内部使用的微服务架构TAF(Total Application Framework)多年的实践成果总结而成的开源项目。在了解具体如何做tars接...

    腾讯移动品质中心TMQ
  • 【必看】社区文章目录

    Nanako
  • 性能测试系列十 压测工作开展中

    调试好脚本,准备好环境,我们就可以开始压测了。那么在压测中,有什么常见的问题以及,我们需要做些什么呢。

    雷子
  • 基于FPGA的新型数字微镜芯片测试系统

    2014年,国务院印发《国家集成电路产业发展推进纲要》,将集成电路发展上升为国家战略。在集成电路产业蓬勃发展的同时,集成电路测试行业成为了不可缺少的一环。目前国...

    FPGA技术江湖
  • go实现的压测工具【单台机器100w连接压测实战】

    本文介绍压测是什么,解释压测的专属名词,教大家如何压测。介绍市面上的常见压测工具(ab、locust、Jmeter、go实现的压测工具、云压测),对比这些压测工...

    link1st
  • 美团点评酒店后台故障演练系统

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

    美团技术团队

扫码关注云+社区

领取腾讯云代金券