如何在 Spring Webflux / WebClient 中设置事件循环池大小?
How to set event-loop pool size in Spring Webflux / WebClient?
在multi-reactor框架中,例如Vert.X,我们可以设置事件循环线程的数量,例如:
final VertxOptions vertxOptions = new VertxOptions();
vertxOptions.setEventLoopPoolSize(16);
final Vertx myVertx = Vertx.vertx(vertxOptions);
如何在 Spring Boot 2 WebFlux / WebClient 中执行等效操作?
您有两个选择:
使用应用事件循环资源配置的自定义程序覆盖 ReactiveWebServerFactory
bean:
@Bean
public ReactiveWebServerFactory reactiveWebServerFactory() {
NettyReactiveWebServerFactory factory = new NettyReactiveWebServerFactory();
factory.addServerCustomizers(builder -> builder.loopResources(LoopResources.create("my-http", 16, true)));
return factory;
}
或使用-Dreactor.ipc.netty.workerCount=16
环境变量。默认情况下,它的值设置为 Math.max(availableProcessors(), 4)
。
示例:java -jar your-app.jar -Dreactor.ipc.netty.workerCount=16
事件循环由 Spring 项目反应堆实现,所有请求都由 event-loop 处理,内部使用反应式 Netty 来处理网络请求。 Boot2.XX使用Reactor Netty 0.8或更高版本,等效系统属性命名为reactor.netty.ioWorkerCount。记录为“默认工作线程数”
您可以通过添加
来定义 event-loop 池大小
VM参数-Dreactor.netty.ioWorkerCount=2
示例:java -jar your-app.jar -Dreactor.netty.ioWorkerCount=2
在multi-reactor框架中,例如Vert.X,我们可以设置事件循环线程的数量,例如:
final VertxOptions vertxOptions = new VertxOptions();
vertxOptions.setEventLoopPoolSize(16);
final Vertx myVertx = Vertx.vertx(vertxOptions);
如何在 Spring Boot 2 WebFlux / WebClient 中执行等效操作?
您有两个选择:
使用应用事件循环资源配置的自定义程序覆盖
ReactiveWebServerFactory
bean:@Bean public ReactiveWebServerFactory reactiveWebServerFactory() { NettyReactiveWebServerFactory factory = new NettyReactiveWebServerFactory(); factory.addServerCustomizers(builder -> builder.loopResources(LoopResources.create("my-http", 16, true))); return factory; }
或使用
-Dreactor.ipc.netty.workerCount=16
环境变量。默认情况下,它的值设置为Math.max(availableProcessors(), 4)
。 示例:java -jar your-app.jar -Dreactor.ipc.netty.workerCount=16
事件循环由 Spring 项目反应堆实现,所有请求都由 event-loop 处理,内部使用反应式 Netty 来处理网络请求。 Boot2.XX使用Reactor Netty 0.8或更高版本,等效系统属性命名为reactor.netty.ioWorkerCount。记录为“默认工作线程数”
您可以通过添加
来定义 event-loop 池大小VM参数-Dreactor.netty.ioWorkerCount=2
示例:java -jar your-app.jar -Dreactor.netty.ioWorkerCount=2