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

3

当我使用Apache Bench测试Spring Reactive项目的性能时,遇到了问题。

ab http://localhost:8080/hi

结果显示超时。

但是对于 curl http://localhost:8080/hi 是可以的。

我的项目使用的Spring Boot版本是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")));
    }
}
1个回答

2

这是由于调用Netty服务器时出现了一个错误。

为了解决此问题,只需在响应头中添加“Connection: closed”。但这并不是最终解决方案。

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")));
    }
}

Apache bench无法处理没有Connection: close的响应。 但是,如果是keep/alive请求,如何处理? 真的希望这个bug能在不久的将来得到修复。 - Jomy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接