文章目录
- Artillery:给服务端做压测的老牌工具
-
- [1、 这工具是干嘛的](#1、 这工具是干嘛的)
- [2、 为什么不用 JMeter](#2、 为什么不用 JMeter)
- [3、 怎么用](#3、 怎么用)
- [4、 适合谁用](#4、 适合谁用)
- [5、 协议和限制](#5、 协议和限制)
- [6、 写在最后](#6、 写在最后)
Artillery:给服务端做压测的老牌工具
Artillery 在 GitHub 上已经累计 9,018 个 Star。
这是一个跑了好多年的负载测试工具,定位很清晰,给 API 和 Web 应用做规模化的压力测试。云原生架构、Playwright 真浏览器压测、二十多种监控和 CI/CD 集成,开箱即用。

1、 这工具是干嘛的
干一件事:模拟大量并发用户往你的服务发请求,看它在压力下能不能扛住。
可以测的东西挺多。HTTP、WebSocket、Socket.io、gRPC、Kinesis 都支持,基本上后端常用协议都覆盖到了。除了简单打单接口,还能模拟真实用户的复杂行为,比如多步骤请求链、事务、登录后操作一整套流程,把线下用户走业务的真实路径复刻到压测脚本里。
2、 为什么不用 JMeter
老牌压测工具一堆,JMeter、Locust、k6、wrk 各有各的拥护者。Artillery 在几个点上做得比较实在。
第一是脚本化。用 YAML 或者 JavaScript 描述场景,比 JMeter 的 GUI 录制方式更适合进 Git 版本管理,也更适合 CI 流水线。
第二是云原生扩展。压测量级上去之后单机就吃不消了,Artillery 直接在 AWS Lambda 或 Fargate 上跑分布式 worker,不用自己搭机器群,不用维护基础设施。
第三是真浏览器压测。基于 Playwright 跑 headless 浏览器发压,能测出真实前端渲染、JS 执行下的体验,不只是发个 HTTP 请求就完事。这对前端比较重的 SPA 应用很关键。
3、 怎么用

安装一行命令:
bash
npm install -g artillery
写个最简单的压测脚本,往指定接口发请求:
yaml
config:
target: "https://example.com"
phases:
- duration: 60
arrivalRate: 20
scenarios:
- flow:
- get:
url: "/"
跑起来:
bash
artillery run test.yml
输出会有 RPS、延迟分布、错误率、P95 P99 这些指标。要看更细的数据,可以接 Prometheus、Datadog、New Relic 这些监控系统,Artillery 官方给了二十多个集成包。
4、 适合谁用
- 后端工程师,上线前需要验证服务能扛多少 QPS
- SRE 和运维团队,做容量规划、找性能拐点
- 做微服务的人在压测单个服务的限流和熔断策略
- 需要在 CI 流水线里加性能门禁的团队
5、 协议和限制
仓库里大部分代码是 MPL 2.0 协议,可以商用。少数 Azure 相关的模块走 BSL 协议,在 Azure 上做商用或者生产环境部署需要单独买商业授权,自己其他云上跑不受这个限制。
6、 写在最后
Artillery 不是新东西,但持续在迭代。社区版免费够用,分布式压测上 AWS Lambda 这条路子比较省心,不用自己搭机群。如果你正要给服务做一次正经的压测,或者想把性能测试塞进 CI,可以拿它试一把。
测上 AWS Lambda 这条路子比较省心,不用自己搭机群。如果你正要给服务做一次正经的压测,或者想把性能测试塞进 CI,可以拿它试一把。