Java 如何限制spring webflux WebClient中打开的套接字数量?
我有一些RESTful服务,我想用Reactor和SpringWebClient准备一个简单的性能基准。基准测试只是创建N个用户,然后为每个创建的用户提供M个投票 不幸的是,下面的代码超过了我的linux机器上的最大打开文件限制1024(Java 如何限制spring webflux WebClient中打开的套接字数量?,java,spring,spring-webflux,project-reactor,reactor-netty,Java,Spring,Spring Webflux,Project Reactor,Reactor Netty,我有一些RESTful服务,我想用Reactor和SpringWebClient准备一个简单的性能基准。基准测试只是创建N个用户,然后为每个创建的用户提供M个投票 不幸的是,下面的代码超过了我的linux机器上的最大打开文件限制1024(ulimit-n1024) RestService是使用SpringWebFlux的标准WebClient实现的 有没有办法根据系统限制限制创建的套接字数量? 堆栈跟踪: Caused by: io.netty.channel.unix.Errors$Nativ
ulimit-n1024
)
RestService是使用SpringWebFlux的标准WebClient实现的
有没有办法根据系统限制限制创建的套接字数量?
堆栈跟踪:
Caused by: io.netty.channel.unix.Errors$NativeIoException: newSocketStream(..) failed: Too many open files
at io.netty.channel.unix.Errors.newIOException(Errors.java:122) ~[netty-transport-native-unix-common-4.1.27.Final.jar:4.1.27.Final]
... 98 common frames omitted
我想没有。但是你可以采取措施来防止它 首先,为什么您的文件描述符限制这么低?Linux为每个打开的套接字打开一个文件描述符,因此如果您希望同时有许多打开的套接字,那么1024是非常低的。我会考虑增加这个限制。 其次,您将把并发配置留给调度程序。您应该知道,
flatMap
操作符有一个变体,允许您控制可以订阅和合并的Publisher
数量:
Flux<V> flatMap(
Function<? super T,? extends Publisher<? extends V>> mapper,
int concurrency)
通量平面图(
FunctionOk,谢谢,我不知道flatMap版本,但严格来说应该是。flatMap(mapper,false,concurrency);
至少这是我在Reactor 3中遇到的问题!您可以在这里找到仅具有mapper和concurrency的版本:
Flux<V> flatMap(
Function<? super T,? extends Publisher<? extends V>> mapper,
int concurrency)