环境 performance-test JDK版本 jdk25(zulu-25) JVM参数 -XX:MaxHeapSize=256m -XX:+UseZGC -XX:+UseCompactObjectHeaders Jmeter 版本 5.6.3 安装插件 Jmeter Plugin Manage: 需要手动下载jar安装 BlazeMeter - HTTP/2 Plugin: 可从Jmeter Plugin Manager安装 压测脚本 Block Jmeter HttpClient.jmx 结果 压测结果 50用户 100用户 150用户 200用户 分析 条件和现象 tomcat.max-thread=1, tomcat工作线程为单线程 vertx http client 目前响应处理工作在eventloop线程上,且配置为只有1个eventloop 服务端全链路无阻塞 http2.0 + nio + CompletableFuture 单个TCP连接上不能出现请求排队 在50用户、100用户、150用户压测时, 未修改tomcat http2.0 协议实现的 maxConcurrentStreams, 压测200用户时修改了maxConcurrentStreams=1000 最大CPU使用率不超过7% 结果分析 最大吞吐量接近100/s, 在此之下的用户量响应时间偏差不大 最大吞吐量接近100/s的原因, tomcat http2.0 协议实现的 maxConcurrentStreams 默认为100, 已修改成1000 结论: 使用NIO时不要阻塞线程,不然和BIO一样吞吐量受限