Spring Cloud Gateway-BlockHound:阻塞呼叫! sun.misc.Unsafe#park

问题描述

在Spring Cloud Gateway应用程序中,在执行PST时,一直观察到CPU使用率很高。因此添加了“ BlockHound”作为依赖项,并调用了“ BlockHound.install();”。在引导类中。可以在下面的日志文件中看到。您能否帮忙告知可能是什么问题-

[2020-08-19 06:00:40,513] [a3a515474c55dfd9] [163167] [reactor-http-epoll-2] [ERROR] [o.s.b.a.w.r.e.AbstractErrorWebExceptionHandler] - [1cca0fbe-26272]  500 Server Err
or for HTTP POST "/lmp/data/msg"
reactor.blockhound.BlockingOperationError: Blocking call! sun.misc.Unsafe#park
        at sun.misc.Unsafe.park(Unsafe.java)
        Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
        |_ checkpoint ⇢ org.springframework.security.web.server.savedrequest.ServerRequestCacheWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.context.SecurityContextServerWebExchangeWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.context.ReactorContextWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.header.HttpHeaderWriterWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.config.web.server.ServerHttpSecurity$ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.WebFilterChainProxy [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.cloud.sleuth.instrument.web.TraceWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ HTTP POST "/lmp/data/msg" [ExceptionHandlingWebHandler]
Stack trace:
                at sun.misc.Unsafe.park(Unsafe.java)
                at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
                at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
                at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
                at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
                at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209)
                at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
                at java.util.concurrent.PriorityBlockingQueue.offer(PriorityBlockingQueue.java:481)
                at java.util.concurrent.PriorityBlockingQueue.add(PriorityBlockingQueue.java:463)
                at reactor.core.scheduler.BoundedElasticScheduler$BoundedServices.pick(BoundedElasticScheduler.java:398)
                at reactor.core.scheduler.BoundedElasticScheduler.createWorker(BoundedElasticScheduler.java:319)
                at reactor.core.scheduler.Schedulers$CachedScheduler.createWorker(Schedulers.java:1090)
                at reactor.core.publisher.MonoSubscribeOn.subscribeOrReturn(MonoSubscribeOn.java:48)
                at reactor.core.publisher.Mono.subscribe(Mono.java:4198)
                at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:75)
                at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onComplete(ScopePassingSpanSubscriber.java:104)
                at reactor.core.publisher.MonoNext$NextSubscriber.onComplete(MonoNext.java:96)
                at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onComplete(ScopePassingSpanSubscriber.java:104)
                at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:359)

下面是技术堆栈-

Spring云网关-Hoxton.RELEASE
春季靴-2.2.1.RELEASE
OpenJDK 1.8

其他依赖项包括

io.projectreactor.tools:blockhound:1.0.4.RELEASE
org.springframework.boot:spring-boot-starter-actuator  
org.springframework.boot:spring-boot-starter-data-redis  
org.springframework.cloud:spring-cloud-starter-sleuth  
io.micrometer:micrometer-registry-prometheus:1.3.3
  

以下是RHEL规范

架构:x86_64
CPU操作模式:32位,64位
CPU:4
在线CPU列表:0-3
每个核心的线程数:1
每个插槽的核心:1
插座:4

下面是JVM参数

-Xms512m -Xmx1024m -XX:+ UseConcMarkSweepGC -XX:+ UseParNewGC -XX:+ CMSParallelRemarkEnabled-XX:CMSInitiatingOccupancyFraction = 60 -XX:+ UseCMSInitiatingOccupancyOnly -XX:+ DisableExplicitGC -XX:+ PrintGCGs -CD :+ PrintGCTimeStamps -XX:+ UseGCLogFileRotation-XX:NumberOfGCLogFiles = 10 -XX:GCLogFileSize = 10240K -Xloggc:/appl/xxx/xxx/logs/gc.log0814_0440-详细:gc -XX:+ HeapDumpOnOutOfMemoryError -XX:HeapDumpPath = / appl / xxx-xxx / xxx / logs-XX:+ PrintStringTableStatistics -Djava.security.egd = file:///dev/./urandom-Dreactor.netty.http.server.accessLogEnabled = true -Dio.netty.leakDetection。级别=高级

在删除“ spring-boot-actuator *”依赖项之后,我现在进入以下内容-

reactor.blockhound.BlockingOperationError: Blocking call! java.lang.Object#wait
        at java.lang.Object.wait(Object.java)
        Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
        |_ checkpoint ⇢ org.springframework.web.cors.reactive.CorsWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.authorization.AuthorizationWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.authorization.ExceptionTranslationWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.authentication.logout.LogoutWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.savedrequest.ServerRequestCacheWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.context.SecurityContextServerWebExchangeWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.context.ReactorContextWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.header.HttpHeaderWriterWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.config.web.server.ServerHttpSecurity$ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.security.web.server.WebFilterChainProxy [DefaultWebFilterChain]
        |_ checkpoint ⇢ org.springframework.cloud.sleuth.instrument.web.TraceWebFilter [DefaultWebFilterChain]
        |_ checkpoint ⇢ HTTP POST "/lmp/data/msg" [ExceptionHandlingWebHandler]
Stack trace:
                at java.lang.Object.wait(Object.java)
                at java.lang.Object.wait(Object.java:502)
                at java.net.InetAddress.checkLookupTable(InetAddress.java:1372)
                at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1289)
                at java.net.InetAddress.getAllByName0(InetAddress.java:1255)
                at java.net.InetAddress.getAllByName(InetAddress.java:1171)
                at java.net.InetAddress.getAllByName(InetAddress.java:1105)
                at java.net.InetAddress.getByName(InetAddress.java:1055)
                at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:156)
                at io.netty.util.internal.SocketUtils$8.run(SocketUtils.java:153)
                at java.security.AccessController.doPrivileged(Native Method)
                at io.netty.util.internal.SocketUtils.addressByName(SocketUtils.java:153)
                at io.netty.resolver.DefaultNameResolver.doResolve(DefaultNameResolver.java:41)
                at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)
                at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:53)
                at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)
                at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)
                at io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...