无法使用 Apache Bench 测试 Spring Boot Webflux 性能

Could not test Spring Boot Webflux performance with Apache Bench

我在使用 Apache Bench 测试 spring 反应项目的性能时遇到了问题。

ab http://localhost:8080/hi

结果显示超时。

但是curl http://localhost:8080/hi

没问题

我的项目使用Spring引导版本是2.0.0.M6。我会粘贴一些代码。

pom.xml 是

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-reactor-netty</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>

MyRouter.java

@Component
public class MyRouter {
    private static final Logger logger = LoggerFactory.getLogger(MyRouter.class);
    @Bean
    RouterFunction<ServerResponse> router(PersonHandler personHandler) {
        return route(GET("/hi"), request -> ok().body(BodyInserters.fromObject("hello")));
    }
}

是ab调用netty server时的bug造成的

要解决它,只需将 "Connection: closed" 添加到响应 header 中。但这不是最终的解决方案。

MyRouter.java

@Component
public class MyRouter {
    private static final Logger logger = LoggerFactory.getLogger(MyRouter.class);
    @Bean
    RouterFunction<ServerResponse> router(PersonHandler personHandler) {
        return route(GET("/hi"), request -> ok().header("Connection", "close").body(BodyInserters.fromObject("hello")));
    }
}