如何解决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 举报,一经查实,本站将立刻删除。