PerfTest — 轻量级高性能开源压测工具,支持 HTTP/1/2/3 与 WebSocket,还能分布式集群压测

14 天前
 gvison

Perftest 特性


快速上手

安装很简单,只需一行命令:

go install github.com/go-dev-frame/sponge/cmd/sponge@latest

安装之后请看 perftest 的 使用指南

单机压测执行命令示例:

# 指定总请求数
sponge perftest http --total=100000 --url=http://localhost:8080/user/1

# 指定压测时长
sponge perftest http --duration=30s --url=http://localhost:8080/user/1

分布式集群压测

当单机压测的能力不足时,使用集群压测,只需运行:

sponge perftest collector

然后在多台机器上执行:

sponge perftest agent --config=agent.yml

Collector 会自动汇总所有 Agent 的性能数据,并在 Web UI 实时展示,如下图所示:


Kubernetes 一键部署

对于大规模测试,手动管理节点是不现实的,因此提供了完整的 Kubernetes 部署脚本 perftest-deployment.yml,直接:

kubectl apply -f perftest-deployment.yml

即可启动 Collector + Agent 集群压测。


WebSocket 压测也支持

想测试消息推送、IM 、通知系统性能?示例:

sponge perftest websocket --worker=100 --duration=1m \
  --body='{"msg":"hello"}' --url=ws://localhost:8080/ws

QPS 、收发延迟、消息统计全都有。


perftest 是一款“从单机到集群”的压测工具,不花时间配置、不依赖外部组件,非常适合开发阶段接口调优、性能回归、系统瓶颈排查和高并发预演。

1373 次点击
所在节点    Go 编程语言
9 条回复
lesismal
14 天前
赞,star
gesse
14 天前

一个建议,太大的数字加上千分号,便于阅读。
Mageblade
14 天前
到目前为止自己用过最好用的免费压测工具非 locust 莫属,可以编写压测脚本模拟真实的业务场景,也可以支持分布式压测。楼主这个工具如果能支持脚本的话倒是可以一战。
millken
14 天前
和 k6 比有何优势
gvison
14 天前
@gesse 感谢建议
gvison
14 天前
@millken perftest 与 K6 的侧重点不同,perftest 侧重从单测到集群测试都比较简单,不依赖第三方组件。使用 K6 测试简单 api 需要写 js 脚本,对于不熟悉 js 的后端来说不够友好,当然对于复杂的负载测试挺好的。因为 perftest 没有使用脚本,性能比 K6 好。
millken
13 天前
k6 的报告输出可以自定义,配合 k8s 及 grafana 实现压测数据实时查看非常棒。
JS 脚本我觉得也是最大的优势,给了开发者以最大的灵活度,特别是动态参数及多接口的情况下。

我认为可以考虑支持脚本( QuickJS 集成也容易)以及多种报告格式支持
millken
13 天前
此外压测策略也是一个特色,如模拟真实情况(前 1 分钟 10 并发, 后面 3 分钟 50 并发, 再来 5 分钟的 100 并发)
gvison
13 天前
@millken 额外集成 QuickJS 确实不难,这样与 K6 趋同化了,那就没必要重复造轮子了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1164288

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX