奇怪的线程阻塞警告

  • 本文关键字:警告 线程 vert.x
  • 更新时间 :
  • 英文 :


我们正在OpenShift集群中运行一个spring-boot-vertx应用程序。使用vertx 4.2.3和弹簧套2.6.2。应用程序侦听传入的tcp连接并将消息转发到rabbit mq我们已经将线程阻塞警告的时间限制降低到500毫秒

我们收到了许多类似的警告

Thread Thread[vert.x-eventloop-thread-1,5,main] has been blocked for 1250 ms, time limit is 500 ms
io.vertx.core.VertxException: Thread blocked
at java.base@17.0.1/sun.nio.ch.EPoll.wait(Native Method)
at java.base@17.0.1/sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:118)
at java.base@17.0.1/sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:129)
at java.base@17.0.1/sun.nio.ch.SelectorImpl.select(SelectorImpl.java:141)
at io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:817)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:460)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base@17.0.1/java.lang.Thread.run(Thread.java:833)

因为这不包括堆栈跟踪中的任何代码。我们很难理解出了什么问题。我们使用ZGC垃圾收集器,没有发现任何异常的GC暂停时间。

有什么想法吗?

线程xyz已被阻止用于

当事件循环线程被阻止的时间超过预期时,就会发生这种情况。

有时,异步客户端只是通过底层同步执行提供异步结果。我建议在使用中检查RabbitMq方法。例如,对于basicPublishWithDeliveryTag,文档中显示

参数:
deliveryTagHandler-回调以捕获deliveryTag对于此消息。请注意,这将在客户端的上下文。

最新更新