Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimize Netty server configuration #7824

Merged
merged 11 commits into from
Oct 3, 2024
Original file line number Diff line number Diff line change
@@ -1,28 +1,40 @@
package framework.benchmark.controller;

import org.springframework.context.annotation.Bean;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.ServerRequest;
import org.springframework.web.reactive.function.server.ServerResponse;
import reactor.core.publisher.Mono;

import static org.springframework.web.reactive.function.server.RequestPredicates.GET;
import static org.springframework.web.reactive.function.server.RequestPredicates.POST;
import static org.springframework.web.reactive.function.server.RouterFunctions.route;

@Component
public class BenchmarkController {

private static final Mono<ServerResponse> EMPTY_RESPONSE = ServerResponse.ok().build();
private static final Mono<ServerResponse> EMPTY_RESPONSE = ServerResponse.ok()
.contentType(MediaType.TEXT_PLAIN)
.headers(h -> {
h.remove(HttpHeaders.SERVER);
h.remove(HttpHeaders.CONNECTION);
})
.build().share();


@Bean
public RouterFunction<ServerResponse> routes() {
return route()
.GET("/", request -> EMPTY_RESPONSE)
.GET("/user/{id}", request -> ServerResponse.ok().bodyValue(request.pathVariable("id")))
.GET("/user/{id}", request -> ServerResponse.ok()
.contentType(MediaType.TEXT_PLAIN)
.headers(h -> {
h.remove(HttpHeaders.SERVER);
h.remove(HttpHeaders.CONNECTION);
})
.bodyValue(request.pathVariable("id")))
.POST("/user", request -> EMPTY_RESPONSE)
.build();
}

}
16 changes: 15 additions & 1 deletion java/spring-webflux/src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,18 @@
server.port=3000
server.error.whitelabel.enabled=false
logging.level.root=ERROR
logging.level.root=WARN
server.http2.enabled=true
spring.threads.virtual.enabled=true
spring.main.lazy-initialization=true
spring.main.keep-alive=true
server.netty.validate-headers=false
server.netty.connection-timeout=5s
server.netty.idle-timeout=30s
server.netty.h2c-max-content-length=1MB
server.netty.initial-buffer-size=64KB
server.netty.max-initial-line-length=8KB
server.netty.max-keep-alive-requests=1000
spring.netty.leak-detection=disabled
server.compression.min-response-size=1KB
server.compression.enabled=true
spring.reactor.netty.shutdown-quiet-period=0s
Loading