如何运用JMH对远程接口进行压测分析?

摘要:在 《java中的基准测试框架JMH》中我们使用JMH框架进行Java SDK中的API的压测。 最近我又遇到了需要对第三方接口进行压测的需求,又用到了它。 也可以用Gatling https:www.cnblogs.comsomef
在 《java中的基准测试框架JMH》中我们使用JMH框架进行Java SDK中的API的压测。 最近我又遇到了需要对第三方接口进行压测的需求,又用到了它。 也可以用Gatling https://www.cnblogs.com/somefuture/p/18624127 JHM(Java Microbenchmark Harness)是OpenJDK团队开发的Java微基准测试框架,专门用于精确测量Java代码的性能,精度可以达到纳秒级别。 提供吞吐量、平均时间、采样时间等多种测试模式 自动进行预热处理,使JVM达到稳定状态 支持多线程测试,模拟真实并发场景 虽然它本身是针对JDK的,但是配合http框架也可以对远程API进行压测。 项目我放到网上了: https://github.com/davelet/local-load-test 用法是: 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