SpringCloudGateway 3.1.4版本 Netty内存泄漏问题解决

一、 产生的异常 

当时是服务器访问不到服务了,上去一看,无法申请资源OutOfDirectMemoryError了,内存级别的东西让人一阵头大,赶紧在线下模拟,

1. 减少分配的堆外内存,打开Netty的监测工具等有助于复现的配置和检查的信息

-XX:MaxDirectMemorySize=2M
-Dio.netty.leakDetection.acquireAndReleaseOnly=true
-Dio.netty.leakDetectionLevel=paranoid
-Dio.netty.leakDetection.targetRecords=50
-XX:-OmitStackTraceInFastThrow
-XX:NativeMemoryTracking=detail

Netty的内存泄漏检测分为四个级别:

  • DISABLED - 完成禁止检测内存泄漏,这个是不推荐。
  • SIMPLE - 如果buffer中出现1%的内存泄漏,打印错误日志,就是上面那样。但是日志是看不到详细在什么位置出现了内存泄漏。鉴于性能考虑,这个是在生产环境中默认使用。
  • ADVANCED - 如果buffer的1%出现内存泄漏,打印错误,并且输出详细的内存泄漏信息。
  • PARANOID - 这个和ADVANCED输出的内容是一样的,但它会对每一次请求的buffer做检查。很适用于调试和单元测试。

建议

1、为了今早的发现问题,强烈建议在开发调试过程中,把检测级别设为PARANOID,设置:

io.netty.leakDetection.level=PARANOID
2023-12-19 17:33:47.568 ERROR 19740 --- [tor-http-nio-54] reactor.netty.transport.ServerTransport  : [158851ed, L:/127.0.0.1:10101 - R:/127.0.0.1:58747] onUncaughtException(SimpleConnection{channel=[id: 0x158851ed, L:/127.0.0.1:10101 - R:/127.0.0.1:58747]})io.netty.util.internal.OutOfDirectMemoryError: failed to allocate 2048 byte(s) of direct memory (used: 2095623, max: 2097152)at io.netty.util.internal.PlatformDependent.incrementMemoryCounter(PlatformDependent.java:845) ~[netty-common-4.1.84.Final.jar:4.1.84.Final]at io.netty.util.internal.PlatformDependent.allocateDirectNoCleaner(PlatformDependent.java:774) ~[netty-common-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.UnpooledUnsafeNoCleanerDirectByteBuf.allocateDirect(UnpooledUnsafeNoCleanerDirectByteBuf.java:30) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.UnpooledDirectByteBuf.<init>(UnpooledDirectByteBuf.java:64) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.UnpooledUnsafeDirectByteBuf.<init>(UnpooledUnsafeDirectByteBuf.java:41) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.UnpooledUnsafeNoCleanerDirectByteBuf.<init>(UnpooledUnsafeNoCleanerDirectByteBuf.java:25) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.UnsafeByteBufUtil.newUnsafeDirectByteBuf(UnsafeByteBufUtil.java:632) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.PooledByteBufAllocator.newDirectBuffer(PooledByteBufAllocator.java:399) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:188) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:179) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.buffer.AbstractByteBufAllocator.ioBuffer(AbstractByteBufAllocator.java:140) ~[netty-buffer-4.1.84.Final.jar:4.1.84.Final]at io.netty.channel.DefaultMaxMessagesRecvByteBufAllocator$MaxMessageHandle.allocate(DefaultMaxMessagesRecvByteBufAllocator.java:120) ~[netty-transport-4.1.84.Final.jar:4.1.84.Final]at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:150) ~[netty-transport-4.1.84.Final.jar:4.1.84.Final]at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) [netty-transport-4.1.84.Final.jar:4.1.84.Final]at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) [netty-transport-4.1.84.Final.jar:4.1.84.Final]at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) [netty-transport-4.1.84.Final.jar:4.1.84.Final]at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) [netty-transport-4.1.84.Final.jar:4.1.84.Final]at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) [netty-common-4.1.84.Final.jar:4.1.84.Final]at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.84.Final.jar:4.1.84.Final]at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.84.Final.jar:4.1.84.Final]at java.lang.Thread.run(Thread.java:750) [na:1.8.0_351]

二、 检查内存泄漏点位

由于有点多,还特意把检测的详细条数改到了50。

挨个查看是不是有自己写的代码或者熟悉的代码,看了一遍没认识的,完蛋这会麻烦了,各种找资料(百度),上官网(Netty的Issues · netty/netty · GitHub)(gateway的LEAK: ByteBuf.release() · Issue #26937 · spring-projects/spring-framework · GitHub)各种查,大部分都是版本问题但是都是老版本,我看我的都是新版的了咋还有,DEBUG后发现总是在请求进来时申请一次2048的,在后续的处理中涨涨降降最后就是这点没释放

2023-12-19 09:33:12.933 [reactor-http-nio-35] ERROR io.netty.util.ResourceLeakDetector - LEAK: ByteBuf.release() was not called before it's garbage-collected. See https://netty.io/wiki/reference-counted-objects.html for more information.
Recent access records: 
#1:io.netty.util.ReferenceCountUtil.release(ReferenceCountUtil.java:90)io.netty.util.ReferenceCountUtil.safeRelease(ReferenceCountUtil.java:116)io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:271)io.netty.channel.ChannelOutboundBuffer.removeBytes(ChannelOutboundBuffer.java:352)io.netty.channel.socket.nio.NioSocketChannel.doWrite(NioSocketChannel.java:421)io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:931)io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:354)io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:895)io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372)io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:921)io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:907)io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:893)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.flush(CombinedChannelDuplexHandler.java:531)io.netty.channel.ChannelOutboundHandlerAdapter.flush(ChannelOutboundHandlerAdapter.java:125)io.netty.channel.CombinedChannelDuplexHandler.flush(CombinedChannelDuplexHandler.java:356)io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:923)io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:907)io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:893)reactor.netty.channel.MonoSendMany$SendManyInner$AsyncFlush.run(MonoSendMany.java:789)io.netty.util.concurrent.AbstractEventExecutor.runTask$$$capture(AbstractEventExecutor.java:174)io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java)io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:167)io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#2:Hint: 'DefaultChannelPipeline$HeadContext#0' will handle the message from this point.io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:116)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:962)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.write(CombinedChannelDuplexHandler.java:526)io.netty.handler.codec.http.HttpObjectEncoder.writeOutList(HttpObjectEncoder.java:118)io.netty.handler.codec.http.HttpObjectEncoder.write(HttpObjectEncoder.java:110)io.netty.channel.CombinedChannelDuplexHandler.write(CombinedChannelDuplexHandler.java:346)io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:879)io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:863)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:968)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856)reactor.netty.channel.MonoSendMany$SendManyInner.run(MonoSendMany.java:321)reactor.netty.channel.MonoSendMany$SendManyInner.trySchedule(MonoSendMany.java:423)reactor.netty.channel.MonoSendMany$SendManyInner.onNext(MonoSendMany.java:223)reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129)reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)reactor.core.publisher.FluxCallable.subscribe(FluxCallable.java:49)reactor.core.publisher.Flux.subscribe(Flux.java:8526)reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)reactor.core.publisher.Operators.complete(Operators.java:137)reactor.netty.FutureMono.doSubscribe(FutureMono.java:122)reactor.netty.FutureMono$DeferredFutureMono.subscribe(FutureMono.java:114)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.netty.NettyOutbound.subscribe(NettyOutbound.java:336)reactor.core.publisher.MonoSource.subscribe(MonoSource.java:69)reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:441)reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:677)reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.run(DefaultPooledConnectionProvider.java:274)io.netty.util.concurrent.AbstractEventExecutor.runTask$$$capture(AbstractEventExecutor.java:174)io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java)io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:167)io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#3:io.netty.handler.codec.http.HttpObjectEncoder.encodeByteBufContent(HttpObjectEncoder.java:405)io.netty.handler.codec.http.HttpObjectEncoder.encodeNotHttpMessageContentTypes(HttpObjectEncoder.java:285)io.netty.handler.codec.http.HttpObjectEncoder.encode(HttpObjectEncoder.java:181)io.netty.handler.codec.http.HttpClientCodec$Encoder.encode(HttpClientCodec.java:203)io.netty.handler.codec.http.HttpObjectEncoder.write(HttpObjectEncoder.java:97)io.netty.channel.CombinedChannelDuplexHandler.write(CombinedChannelDuplexHandler.java:346)io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:879)io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:863)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:968)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856)reactor.netty.channel.MonoSendMany$SendManyInner.run(MonoSendMany.java:321)reactor.netty.channel.MonoSendMany$SendManyInner.trySchedule(MonoSendMany.java:423)reactor.netty.channel.MonoSendMany$SendManyInner.onNext(MonoSendMany.java:223)reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129)reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)reactor.core.publisher.FluxCallable.subscribe(FluxCallable.java:49)reactor.core.publisher.Flux.subscribe(Flux.java:8526)reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)reactor.core.publisher.Operators.complete(Operators.java:137)reactor.netty.FutureMono.doSubscribe(FutureMono.java:122)reactor.netty.FutureMono$DeferredFutureMono.subscribe(FutureMono.java:114)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.netty.NettyOutbound.subscribe(NettyOutbound.java:336)reactor.core.publisher.MonoSource.subscribe(MonoSource.java:69)reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:441)reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:677)reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.run(DefaultPooledConnectionProvider.java:274)io.netty.util.concurrent.AbstractEventExecutor.runTask$$$capture(AbstractEventExecutor.java:174)io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java)io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:167)io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#4:io.netty.handler.codec.http.HttpObjectEncoder.encodeByteBufAndTrailers(HttpObjectEncoder.java:453)io.netty.handler.codec.http.HttpObjectEncoder.encodeByteBufContent(HttpObjectEncoder.java:403)io.netty.handler.codec.http.HttpObjectEncoder.encodeNotHttpMessageContentTypes(HttpObjectEncoder.java:285)io.netty.handler.codec.http.HttpObjectEncoder.encode(HttpObjectEncoder.java:181)io.netty.handler.codec.http.HttpClientCodec$Encoder.encode(HttpClientCodec.java:203)io.netty.handler.codec.http.HttpObjectEncoder.write(HttpObjectEncoder.java:97)io.netty.channel.CombinedChannelDuplexHandler.write(CombinedChannelDuplexHandler.java:346)io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:879)io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:863)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:968)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856)reactor.netty.channel.MonoSendMany$SendManyInner.run(MonoSendMany.java:321)reactor.netty.channel.MonoSendMany$SendManyInner.trySchedule(MonoSendMany.java:423)reactor.netty.channel.MonoSendMany$SendManyInner.onNext(MonoSendMany.java:223)reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129)reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)reactor.core.publisher.FluxCallable.subscribe(FluxCallable.java:49)reactor.core.publisher.Flux.subscribe(Flux.java:8526)reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)reactor.core.publisher.Operators.complete(Operators.java:137)reactor.netty.FutureMono.doSubscribe(FutureMono.java:122)reactor.netty.FutureMono$DeferredFutureMono.subscribe(FutureMono.java:114)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.netty.NettyOutbound.subscribe(NettyOutbound.java:336)reactor.core.publisher.MonoSource.subscribe(MonoSource.java:69)reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:441)reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:677)reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.run(DefaultPooledConnectionProvider.java:274)io.netty.util.concurrent.AbstractEventExecutor.runTask$$$capture(AbstractEventExecutor.java:174)io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java)io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:167)io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#5:Hint: 'reactor.left.httpCodec' will handle the message from this point.io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:116)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:962)io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856)reactor.netty.channel.MonoSendMany$SendManyInner.run(MonoSendMany.java:321)reactor.netty.channel.MonoSendMany$SendManyInner.trySchedule(MonoSendMany.java:423)reactor.netty.channel.MonoSendMany$SendManyInner.onNext(MonoSendMany.java:223)reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129)reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)reactor.core.publisher.FluxCallable.subscribe(FluxCallable.java:49)reactor.core.publisher.Flux.subscribe(Flux.java:8526)reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)reactor.core.publisher.Operators.complete(Operators.java:137)reactor.netty.FutureMono.doSubscribe(FutureMono.java:122)reactor.netty.FutureMono$DeferredFutureMono.subscribe(FutureMono.java:114)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.netty.NettyOutbound.subscribe(NettyOutbound.java:336)reactor.core.publisher.MonoSource.subscribe(MonoSource.java:69)reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:441)reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:677)reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.run(DefaultPooledConnectionProvider.java:274)io.netty.util.concurrent.AbstractEventExecutor.runTask$$$capture(AbstractEventExecutor.java:174)io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java)io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:167)io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#6:org.springframework.core.io.buffer.NettyDataBufferFactory.wrap(NettyDataBufferFactory.java:93)org.springframework.cloud.gateway.support.ServerWebExchangeUtils$1.lambda$getBody$0(ServerWebExchangeUtils.java:375)reactor.core.publisher.MonoSupplier.call(MonoSupplier.java:86)reactor.core.publisher.FluxCallable.subscribe(FluxCallable.java:44)reactor.core.publisher.Flux.subscribe(Flux.java:8526)reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)reactor.core.publisher.Operators.complete(Operators.java:137)reactor.netty.FutureMono.doSubscribe(FutureMono.java:122)reactor.netty.FutureMono$DeferredFutureMono.subscribe(FutureMono.java:114)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.netty.NettyOutbound.subscribe(NettyOutbound.java:336)reactor.core.publisher.MonoSource.subscribe(MonoSource.java:69)reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:441)reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:677)reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.run(DefaultPooledConnectionProvider.java:274)io.netty.util.concurrent.AbstractEventExecutor.runTask$$$capture(AbstractEventExecutor.java:174)io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java)io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:167)io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#7:org.springframework.core.io.buffer.NettyDataBuffer.release(NettyDataBuffer.java:326)org.springframework.core.io.buffer.DataBufferUtils.release(DataBufferUtils.java:521)org.springframework.core.codec.StringDecoder.decode(StringDecoder.java:192)org.springframework.core.codec.StringDecoder.decode(StringDecoder.java:61)org.springframework.core.codec.AbstractDataBufferDecoder.decodeDataBuffer(AbstractDataBufferDecoder.java:109)org.springframework.core.codec.AbstractDataBufferDecoder.lambda$decodeToMono$1(AbstractDataBufferDecoder.java:96)reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:113)reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299)reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337)reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160)reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1817)reactor.core.publisher.FluxCallable.subscribe(FluxCallable.java:49)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157)reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74)reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:101)reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299)reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337)reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160)reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260)reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:400)reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:419)reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:603)reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:266)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#8:org.springframework.core.io.buffer.NettyDataBufferFactory.wrap(NettyDataBufferFactory.java:93)org.springframework.cloud.gateway.support.ServerWebExchangeUtils$1.lambda$getBody$0(ServerWebExchangeUtils.java:375)reactor.core.publisher.MonoSupplier.call(MonoSupplier.java:86)reactor.core.publisher.FluxCallable.subscribe(FluxCallable.java:44)reactor.core.publisher.Mono.subscribe(Mono.java:4455)reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157)reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74)reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:101)reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299)reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337)reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160)reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260)reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:400)reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:419)reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:603)reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:266)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#9:io.netty.handler.codec.http.DefaultHttpContent.release(DefaultHttpContent.java:92)io.netty.util.ReferenceCountUtil.release(ReferenceCountUtil.java:90)reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:367)reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:404)reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:598)reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:266)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#10:org.springframework.core.io.buffer.NettyDataBufferFactory.wrap(NettyDataBufferFactory.java:93)reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:106)reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200)reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:364)reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:404)reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:598)reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:266)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#11:reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:185)reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:364)reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:404)reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:598)reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:266)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#12:Hint: [a2330415-3, L:/127.0.0.1:10101 - R:/127.0.0.1:52736] Receiver reactor.core.publisher.FluxMap$MapSubscriber will handle the message from this pointio.netty.handler.codec.http.DefaultHttpContent.touch(DefaultHttpContent.java:86)io.netty.handler.codec.http.DefaultLastHttpContent.touch(DefaultLastHttpContent.java:96)io.netty.handler.codec.http.DefaultLastHttpContent.touch(DefaultLastHttpContent.java:30)reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:360)reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:404)reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:598)reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:266)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#13:Hint: 'reactor.right.reactiveBridge' will handle the message from this point.io.netty.handler.codec.http.DefaultHttpContent.touch(DefaultHttpContent.java:86)io.netty.handler.codec.http.DefaultLastHttpContent.touch(DefaultLastHttpContent.java:96)io.netty.handler.codec.http.DefaultLastHttpContent.touch(DefaultLastHttpContent.java:30)io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:116)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:417)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:266)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#14:Hint: 'reactor.left.httpTrafficHandler' will handle the message from this point.io.netty.handler.codec.http.DefaultHttpContent.touch(DefaultHttpContent.java:86)io.netty.handler.codec.http.DefaultLastHttpContent.touch(DefaultLastHttpContent.java:96)io.netty.handler.codec.http.DefaultLastHttpContent.touch(DefaultLastHttpContent.java:30)io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:116)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:417)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336)io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#15:io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#16:Hint: 'reactor.left.httpCodec' will handle the message from this point.io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:116)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:417)io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
#17:Hint: 'DefaultChannelPipeline$HeadContext#0' will handle the message from this point.io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:116)io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:417)io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)
Created at:io.netty.buffer.PooledByteBufAllocator.newDirectBuffer(PooledByteBufAllocator.java:403)io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:188)io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:179)io.netty.buffer.AbstractByteBufAllocator.ioBuffer(AbstractByteBufAllocator.java:140)io.netty.channel.DefaultMaxMessagesRecvByteBufAllocator$MaxMessageHandle.allocate(DefaultMaxMessagesRecvByteBufAllocator.java:120)io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:150)io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)java.lang.Thread.run(Thread.java:750)

三、 修复

别看上面一堆很长,关键的就是几个点:

Hint: 开头的

Spring的一些

如果有自己的代码记得释放就好,我的没有就需要对比试用版本和泄漏点是不是有使用没有释放,或者释放未成功。

第一次试着升级了gateway的版本但是无效,后来想单独升级会不会有冲突,回滚后一起升级的Springboot+SpringCloud,试运行后还是不行,查看依赖时发现Libraries中旧版Jar包引入在未删除,造成了冲突,删除后,Maven刷新,在运行一切就正常了。

原版本:

<spring-boot.version>2.6.13</spring-boot.version>
<spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>
<spring-cloud.version>2021.0.5</spring-cloud.version>

升级后版本:

<spring-boot.version>2.6.15</spring-boot.version>
<spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>
<spring-cloud.version>2021.0.8</spring-cloud.version>

推荐堆外内存监控程序和检查的一些资料可以参考:

spring gateway LEAK: ByteBuf.release() was not called before it's garbage-collected - 望)=天涯 - 博客园 (cnblogs.com)

SpringCloud-Gateway OutOfDirectMemoryError排查-CSDN博客

Spring Boot各版本与Java版本的对应兼容关系,与构建工具(Maven、Gradle)版本的对应兼容关系,对servlet 容器的支持-CSDN博客

还有一些找不到了,每个里面找个有用的汇总起来解决;希望可以帮到有需要的朋友

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/232638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

#HarmonyOS:@ohos.promptAction (弹窗)---onProgressChange

组件实例 ohos.promptAction (弹窗) 导入模块 import promptAction from ohos.promptAction示例 try {promptAction.showToast({ message: Message Info,duration: 2000, bottom: 64 // 设置弹窗边框距离屏幕底部的位置}); } catch (error) {console.error(sho…

建筑模板怎么选?

在建筑领域&#xff0c;选择合适的模板材料对于确保工程质量、提高施工效率和控制成本至关重要。目前&#xff0c;常见的建筑模板主要有钢模板、塑料模板和木模板三种类型&#xff0c;每种都有其独特的优势和局限性。本文将对这些模板类型进行分析&#xff0c;并特别推荐广西生…

linux | sed 命令使用 | xargs命令 使用

##################################################### sed命令来自英文词组stream editor的缩写&#xff0c;其功能是利用语法/脚本对文本文件进行批量的编辑操作。sed命令最初由贝尔实验室开发&#xff0c;后被众多Linux系统集成&#xff0c;能够通过正则表达式对文件进行批…

C++11 【初识】

C11简介 1.在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1)&#xff0c;使得C03这个名字已经取代了C98称为C11之前的最新C标准名称。 2.不过由于C03(TC1)主要是对C98标准中的漏洞进行修复&#xff0c;语言的核心部分则没有改动&#xff0c;因此人们习惯性的把两个标准合…

化合物1219962-49-8;AT791抑制剂

化合物1219962-49-8是一种小分子化合物&#xff0c;分子式为C15H25N3O4&#xff0c;相对分子质量为305.37。该化合物为白色至灰白色粉末&#xff0c;不溶于水&#xff0c;易溶于有机溶剂&#xff0c;如甲醇、乙醇等。因此&#xff0c;该化合物在制备时&#xff0c;可以通过有机…

【RocketMQ-Install】RocketMQ 的安装及基础命令的使用

【RocketMQ-Install】Windows 环境下 安装本地 RocketMQ 及基础命令的使用 1&#xff09;下载 RocketMQ 安装包1.1.官网下载&#xff08;推荐&#xff09;1.2.Git 下载1.3.安装环境要求说明 2&#xff09;Windows 安装3&#xff09;Linux 安装4&#xff09;控制台安装5&#xf…

HTML5+CSS3小实例:纯CSS实现网站置灰

实例:纯CSS实现网站置灰 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content="…

【华为OD题库-097】最大岛屿体积-java

题目 题目描述 给你一个由大于0的数&#xff08;陆地)和0(水)组成的的二维网格&#xff0c;请你计算网格中最大岛屿的体积。陆地的数表示所在岛屿的体积。岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以假…

未来医疗的新希望:人工智能与智能器官的奇妙融合

导言 人工智能技术的不断演进在医疗领域掀起了一场革命。随着智能器官与人工智能的深度融合&#xff0c;虽然医学领域迎来了前所未有的机遇&#xff0c;但同时也伴随着一系列潜在的问题与挑战。本文将深入探讨人工智能如何与智能器官相互融合&#xff0c;为医学带来新的治疗可能…

Vue--第十天

终极实战----大事件项目 1.简介&#xff1a; 2.创建项目&#xff1a; 1.创建&#xff08;159-163&#xff09;&#xff1a; 还是对着视频操作吧 2.路由&#xff1a; 3.element Plus: 导入element Plus 后不需要再导入插件配置&#xff0c;就连组件导入也不用 4.pinia构建用…

视频号小店如何搭建团队?

我是电商珠珠 在视频号小店内&#xff0c;最适合发展的就是企业店。对于商家来说&#xff0c;前期需要办理企业的营业执照&#xff0c;然后再进行入驻。 企业店的发展潜力比较大&#xff0c;个体店只适合达人去玩。但是对于开店之后的团队搭建问题&#xff0c;有很多人不知道…

【二分查找】35.搜索插入位置

题目 法1&#xff1a;二分查找 基础方法&#xff0c;必须掌握&#xff01; class Solution {public int searchInsert(int[] nums, int target) {if (nums.length 0) {return 0;}int left 0, right nums.length - 1, mid 0;while (left < right) {mid left (right …

nginx部署vue项目

nginx部署vue 解决nginx中vue项目刷新报404问题解决nginx转发后端服务隐藏部分url访问url路径/prod-api/api经过nginx反向代理后&#xff0c;到达后端服务的实际url地址为/api。 解决nginx中vue项目刷新报404问题 location / { …

论文阅读——Painter

Images Speak in Images: A Generalist Painter for In-Context Visual Learning GitHub - baaivision/Painter: Painter & SegGPT Series: Vision Foundation Models from BAAI 可以做什么&#xff1a; 输入和输出都是图片&#xff0c;并且不同人物输出的图片格式相同&a…

券商期权手续费现在最低多少钱一张?怎么调低最方便

券商期权手续费是指您在证券公司开设期权账户并进行期权交易时&#xff0c;需要向券商支付的费用。券商期权手续费主要包括以下三个部分&#xff1a; 中国结算费用&#xff1a;这是中国证券登记结算有限责任公司向期权交易者收取的费用&#xff0c;固定为每张合约0.3元&#x…

智能优化算法应用:基于算术优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于算术优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于算术优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.算术优化算法4.实验参数设定5.算法结果6.…

关于iframes的嵌套问题

1.检测iframes的嵌套方式一 if (self.frameElement && self.frameElement.tagName "IFRAME") {alert(‘在iframe中’); }2.检测iframes的嵌套方式二 if (window.frames.length ! parent.frames.length) {alert(‘在iframe中’); }3.检测iframes的嵌套方式…

Macbook 系统时间异常问题

现象 忘记充电&#xff0c;电量耗尽关机&#xff0c;开机后时间不对&#xff0c;开启自动对时&#xff0c;时间会变成上个月的一天&#xff0c;系统更新后问题依旧&#xff0c;每次出现问题都需要手动调整。 解决方法验证 删除 /var/db/timed/com.apple.timed.plist删除 /et…

【STM32入门】4.3旋转编码器计次

1.旋转编码器原理 旋转编码器旋转的时候A、B两个引脚会产生相位差90度的方波&#xff0c;这个地方要尤其注意&#xff1a; 1.方波的相位差决定了中断触发方式&#xff0c;是上升沿还是下降沿。 2.方波的相位差决定了判断逻辑。 逻辑&#xff1a; 1.A引脚的上升沿对应B引脚…

【转载】【Unity】WebSocket通信

1 前言 Unity客户端常用的与服务器通信的方式有socket、http、webSocket。本文主要实现一个简单的WebSocket通信案例&#xff0c;包含客户端、服务器&#xff0c;实现了两端的通信以及客户端向服务器发送关闭连接请求的功能。实现上没有使用Unity相关插件&#xff0c;使用的就是…