使用JMH对远程接口进行压测

在 《java中的基准测试框架JMH》中我们使用JMH框架进行Java SDK中的API的压测。

最近我又遇到了需要对第三方接口进行压测的需求,又用到了它。

JHM(Java Microbenchmark Harness)是OpenJDK团队开发的Java微基准测试框架,专门用于精确测量Java代码的性能,精度可以达到纳秒级别。
提供吞吐量、平均时间、采样时间等多种测试模式

自动进行预热处理,使JVM达到稳定状态

支持多线程测试,模拟真实并发场景

虽然它本身是针对JDK的,但是配合http框架也可以对远程API进行压测。

项目我放到网上了: https://github.com/davelet/local-load-test

用法是:

bash 复制代码
java -Dapi.baseUrl=http://localhost:8080 \
  -Dapi.endpoint=/api/v1/test \
  -Dapi.method=GET \
  -jar target/benchmarks.jar \
  -t 10 -wi 3 -w 5s -i 5 -r 10s \
  ApiLoadTestBenchmark

API配置参数(通过-D指定)

参数 说明 默认值
api.baseUrl API基础URL http://localhost:8080
api.endpoint API端点路径 /api/v1/test
api.method HTTP方法 GET
api.body 请求体(JSON) ""
api.headers HTTP Headers ""
api.connectionTimeout 连接超时(ms) 5000
api.socketTimeout 响应超时(ms) 10000

JMH性能测试参数(通过命令行选项指定)

参数 说明 默认值 示例
-t 并发线程数 1 -t 10
-wi 预热迭代次数 0 -wi 3
-w 每次预热时长 10s -w 5s
-i 测试迭代次数 1 -i 5
-r 每次测试时长 10s -r 10s
-f JVM fork次数 1 -f 1

更复杂和详细的说明可以参考 https://github.com/davelet/local-load-test/blob/develop/README.md

相关推荐
JMzz6 小时前
Rust 中的内存对齐与缓存友好设计:性能优化的隐秘战场 ⚡
java·后端·spring·缓存·性能优化·rust
Java水解6 小时前
2026java面试题(含答案,持续更新中)
java·后端·面试
何中应6 小时前
Oracle数据库安装(Windows)
java·数据库·后端·oracle
Han.miracle6 小时前
Java的多线程——多线程(二)
java·开发语言·线程·多线程
慌糖6 小时前
Java中JSON数据提取与处理
java·json
没有bug.的程序员7 小时前
Spring Boot 整合第三方组件:Redis、MyBatis、Kafka 实战
java·spring boot·redis·后端·spring·bean·mybatis
cherryc_7 小时前
JavaSE基础——第十二章 集合
java·开发语言
wgb04097 小时前
vxe table 升级之后页面数据不显示解决方法
java·前端·javascript
May’sJL7 小时前
Redis高可用-主从复制
java·redis·缓存