线程处于等待状态:java.lang.Thread.State:在sun.misc.Unsafe.park(Native



我的应用程序负载很重,我的日志低于sudo -u tomcat jstack <java_process_id>

下面的线程正在使用来自 Kafka 的消息,它被卡住了。由于此线程处于等待状态,因此不再使用卡夫卡消息。

"StreamThread-3" #91 daemon prio=5 os_prio=0 tid=0x00007f9b5c606000 nid=0x1e4d waiting on condition [0x00007f9b506c5000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x000000073aad9718> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.ArrayBlockingQueue.put(ArrayBlockingQueue.java:353)
at ch.qos.logback.core.AsyncAppenderBase.put(AsyncAppenderBase.java:160)
at ch.qos.logback.core.AsyncAppenderBase.append(AsyncAppenderBase.java:148)
at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84)
at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51)
at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270)
at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257)
at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421)
at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:383)
at ch.qos.logback.classic.Logger.error(Logger.java:538)
at com.abc.system.solr.repo.AbstractSolrRepository.doSave(AbstractSolrRepository.java:316)
at com.abc.system.solr.repo.AbstractSolrRepository.save(AbstractSolrRepository.java:295)

我也找到了这篇文章 WAIT at sun.misc.Unsafe.park(Native Method) 但它对我的情况没有帮助。

在这种情况下,我还可以调查什么以获取更多详细信息?

我也遇到了同样的问题。但是,幸运的是,我通过调整池的大小以及生产者和消费者的数量解决了我的问题。

尝试检查是否有任何方法可以配置以下内容。

  1. 线程池的大小
  2. 消费者/生产者的数量(如果我们可以在 kafka 中配置)

确保线程池应具有足够的线程来为使用者和生产者提供服务。

最新更新