Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设置reactor.core.BlockingSingleSubscriber.blockingGet()超时_Java - Fatal编程技术网

Java 如何设置reactor.core.BlockingSingleSubscriber.blockingGet()超时

Java 如何设置reactor.core.BlockingSingleSubscriber.blockingGet()超时,java,Java,我发现我的应用程序CPU使用率非常高(>200%),我使用jstack转储线程: /opt/dabai/tools/jdk1.8.0_211/bin/jstack -F 5307 >> soa-illidan.log 许多线程堆栈日志如下所示: Thread 20247: (state = BLOCKED) - sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be i

我发现我的应用程序CPU使用率非常高(>200%),我使用jstack转储线程:

/opt/dabai/tools/jdk1.8.0_211/bin/jstack -F 5307 >> soa-illidan.log
许多线程堆栈日志如下所示:

 Thread 20247: (state = BLOCKED)
     - sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
     - java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=175 (Compiled frame)
     - java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt() @bci=1, line=836 (Compiled frame)
     - java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(int) @bci=72, line=997 (Compiled frame)
     - java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(int) @bci=24, line=1304 (Compiled frame)
     - java.util.concurrent.CountDownLatch.await() @bci=5, line=231 (Compiled frame)
     - reactor.core.publisher.BlockingSingleSubscriber.blockingGet() @bci=48, line=81 (Compiled frame)
     - reactor.core.publisher.Mono.block() @bci=20, line=1494 (Compiled frame)
     - org.springframework.boot.actuate.autoconfigure.health.HealthIndicatorRegistryBeans$ReactiveHealthIndicators.lambda$adapt$1(org.springframework.boot.actuate.health.ReactiveHealthIndicator) @bci=6, line=61 (Compiled frame)
     - org.springframework.boot.actuate.autoconfigure.health.HealthIndicatorRegistryBeans$ReactiveHealthIndicators$$Lambda$538.health() @bci=4 (Compiled frame)
     - org.springframework.boot.actuate.health.CompositeHealthIndicator.health() @bci=63, line=98 (Compiled frame)
     - org.springframework.boot.actuate.health.HealthEndpoint.health() @bci=4, line=50 (Compiled frame)
     - org.springframework.boot.actuate.health.HealthEndpointWebExtension.health(org.springframework.boot.actuate.endpoint.SecurityContext) @bci=8, line=54 (Compiled frame)
     - sun.reflect.GeneratedMethodAccessor198.invoke(java.lang.Object, java.lang.Object[]) @bci=40 (Compiled frame)
     - sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) @bci=6, line=43 (Compiled frame)
     - java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) @bci=56, line=498 (Compiled frame)
     - org.springframework.util.ReflectionUtils.invokeMethod(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) @bci=3, line=282 (Compiled frame)
     - org.springframework.boot.actuate.endpoint.invoke.reflect.ReflectiveOperationInvoker.invoke(org.springframework.boot.actuate.endpoint.InvocationContext) @bci=29, line=76 (Compiled frame)
     - org.springframework.boot.actuate.endpoint.annotation.AbstractDiscoveredOperation.invoke(org.springframework.boot.actuate.endpoint.InvocationContext) @bci=5, line=61 (Compiled frame)
     - org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$ServletWebOperationAdapter.handle(javax.servlet.http.HttpServletRequest, java.util.Map) @bci=29, line=294 (Compiled frame)
     - org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest, java.util.Map) @bci=6, line=355 (Compiled frame)
     - sun.reflect.GeneratedMethodAccessor197.invoke(java.lang.Object, java.lang.Object[]) @bci=48 (Compiled frame)
     - sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) @bci=6, line=43 (Compiled frame)
     - java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) @bci=56, line=498 (Compiled frame)
     - org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(java.lang.Object[]) @bci=16, line=189 (Compiled frame)
     - org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(org.springframework.web.context.request.NativeWebRequest, org.springframework.web.method.support.ModelAndViewContainer, java.lang.Object[]) @bci=56, line=138 (Compiled frame)
     - org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(org.springframework.web.context.request.ServletWebRequest, org.springframework.web.method.support.ModelAndViewContainer, java.lang.Object[]) @bci=4, line=102 (Compiled frame)
     - org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.springframework.web.method.HandlerMethod) @bci=244, line=892 (Compiled frame)
     - org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.springframework.web.method.HandlerMethod) @bci=81, line=797 (Compiled frame)
     - org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object) @bci=7, line=87 (Compiled frame)
     - org.springframework.web.servlet.DispatcherServlet.doDispatch(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) @bci=257, line=1038 (Compiled frame)
     - org.springframework.web.servlet.DispatcherServlet.doService(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) @bci=212, line=942 (Compiled frame)
     - org.springframework.web.servlet.FrameworkServlet.processRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) @bci=71, line=1005 (Compiled frame)
     - org.springframework.web.servlet.FrameworkServlet.doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) @bci=3, line=897 (Compiled frame)
     - javax.servlet.http.HttpServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) @bci=35, line=645 (Compiled frame)
     - org.springframework.web.servlet.FrameworkServlet.service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) @bci=33, line=882 (Compiled frame)
     - javax.servlet.http.HttpServlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=39, line=750 (Compiled frame)
     - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=304, line=231 (Compiled frame)
     - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=101, line=166 (Compiled frame)
     - com.alibaba.druid.support.http.WebStatFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=190, line=123 (Compiled frame)
     - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=193 (Compiled frame)
     - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=101, line=166 (Compiled frame)
     - org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.FilterChain) @bci=49, line=90 (Compiled frame)
     - org.springframework.web.filter.OncePerRequestFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=111, line=107 (Compiled frame)
     - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=193 (Compiled frame)
     - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=101, line=166 (Compiled frame)
     - org.springframework.web.filter.CorsFilter.doFilterInternal(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.FilterChain) @bci=55, line=96 (Compiled frame)
     - org.springframework.web.filter.OncePerRequestFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=111, line=107 (Compiled frame)
     - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=193 (Compiled frame)
     - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=101, line=166 (Compiled frame)
     - org.springframework.cloud.sleuth.instrument.web.ExceptionLoggingFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=3, line=50 (Compiled frame)
     - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=193 (Compiled frame)
     - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=101, line=166 (Compiled frame)
     - brave.servlet.TracingFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=148, line=86 (Compiled frame)
     - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=193 (Compiled frame)
     - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=101, line=166 (Compiled frame)
     - org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.FilterChain) @bci=21, line=117 (Compiled frame)
     - org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.FilterChain) @bci=4, line=106 (Compiled frame)
     - org.springframework.web.filter.OncePerRequestFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=111, line=107 (Compiled frame)
     - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=193 (Compiled frame)
     - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=101, line=166 (Compiled frame)
     - org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.FilterChain) @bci=53, line=200 (Compiled frame)
     - org.springframework.web.filter.OncePerRequestFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) @bci=111, line=107 (Compiled frame)
     - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=135, line=193 (Compiled frame)
     - org.apache.catalina.core.ApplicationFilterChain.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse) @bci=101, line=166 (Compiled frame)
     - org.apache.catalina.core.StandardWrapperValve.invoke(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response) @bci=688, line=200 (Compiled frame)
     - org.apache.catalina.core.StandardContextValve.invoke(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response) @bci=166, line=96 (Compiled frame)
     - org.apache.catalina.authenticator.AuthenticatorBase.invoke(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response) @bci=260, line=490 (Compiled frame)
     - org.apache.catalina.core.StandardHostValve.invoke(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response) @bci=114, line=139 (Compiled frame)
     - org.apache.catalina.valves.ErrorReportValve.invoke(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response) @bci=6, line=92 (Compiled frame)
     - org.apache.catalina.core.StandardEngineValve.invoke(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response) @bci=45, line=74 (Compiled frame)
     - org.apache.catalina.connector.CoyoteAdapter.service(org.apache.coyote.Request, org.apache.coyote.Response) @bci=199, line=343 (Compiled frame)
     - org.apache.coyote.http11.Http11Processor.service(org.apache.tomcat.util.net.SocketWrapperBase) @bci=791, line=408 (Compiled frame)
     - org.apache.coyote.AbstractProcessorLight.process(org.apache.tomcat.util.net.SocketWrapperBase, org.apache.tomcat.util.net.SocketEvent) @bci=113, line=66 (Compiled frame)
     - org.apache.coyote.AbstractProtocol$ConnectionHandler.process(org.apache.tomcat.util.net.SocketWrapperBase, org.apache.tomcat.util.net.SocketEvent) @bci=414, line=834 (Compiled frame)
     - org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun() @bci=191, line=1415 (Compiled frame)
     - org.apache.tomcat.util.net.SocketProcessorBase.run() @bci=21, line=49 (Compiled frame)
     - java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=95, line=1149 (Compiled frame)
     - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=624 (Interpreted frame)
     - org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run() @bci=4, line=61 (Interpreted frame)

 - java.lang.Thread.run() @bci=11, line=748 (Compiled frame)

我阅读了源代码,发现react BlockingSingleSubscriber.blockingGet()方法可能没有给出超时值,但如何配置?

尝试实现ReactiveHealthIndicator,如下所示:

@Component
public class MyReactiveHealthIndicator implements ReactiveHealthIndicator {

    @Override
    public Mono<Health> health() {
        return checkDownstreamServiceHealth().onErrorResume(
                ex -> Mono.just(new Health.Builder().down(ex).build())
        );
    }

    private Mono<Health> checkDownstreamServiceHealth() {
        // we could use WebClient to check health reactively
        Health health = new Health.Builder().up().build();
        return Mono.just(health).timeout(Duration.ofSeconds(5));
    }
}
@组件
公共类MyReactiveHealthIndicator实现了ReactiveHealthIndicator{
@凌驾
公共卫生(){
返回checkDownstreamServiceHealth().onErrorResume(
ex->Mono.just(new Health.Builder().down(ex.build())
);
}
private Mono CheckDownstreamService Health(){
//我们可以使用WebClient以反应式方式检查运行状况
Health Health=新建Health.Builder().up().build();
返回Mono.just(health.timeout)(持续时间为秒(5));
}
}