2

HornetQ 2.2.5 を使用していますが、問題はクライアント側 (Q にメッセージを送信する側) で、すべてのプロデューサースレッドが WAITING 状態でスタックすることです。

プロデューサーはあるマシンにあり、HornetQ サーバーは別のマシンにあることに注意してください。

これは、クライアント側のスレッド ダンプです。

スレッド: pool-10-thread-9 : 優先度:5、デーモン:false、threadId:521、threadState:WAITING、lockName:java.util.concurrent.Semaphore$NonfairSync@60568a13

sun.misc.Unsafe.park(ネイティブメソッド)

java.util.concurrent.locks.LockSupport.park(LockSupport.java:156) java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811) java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptively(AbstractQueuedSynchronizer. java:969) java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptively(AbstractQueuedSynchronizer.java:1281)

java.util.concurrent.Semaphore.acquire(Semaphore.java:441) org.hornetq.core.client.impl.ClientProducerCreditsImpl.acquireCredits(ClientProducerCreditsImpl.java:74) org.hornetq.core.client.impl.ClientProducerImpl.doSend( ClientProducerImpl.java:305) org.hornetq.core.client.impl.ClientProducerImpl.send(ClientProducerImpl.java:142) org.hornetq.jms.client.HornetQMessageProducer.doSend(HornetQMessageProducer.java:451) org.hornetq.jms. client.HornetQMessageProducer.send(HornetQMessageProducer.java:199)

Q への接続とセッションはキャッシュされ、クライアント側で再利用されます。

サーバー側には、次のログがあります。

[hornetq-failure-check-thread] 19:25:30,820 警告 [org.hornetq.core.protocol.core.impl.RemotingConnectionImpl]
接続障害が検出されました: /10.2.6.11:50697 からデータを受信しませんでした。クライアントが接続を閉じずに終了またはクラッシュしたか、サーバーとクライアント間のネットワークに障害が発生した可能性があります。また、connection-ttl と client-failure-check-period を正しく構成していない可能性もあります。詳細については、ユーザーマニュアルを確認してください。これで接続が閉じられます。[コード=3]

すべてのプロデューサー スレッドがスタックしている理由はありますか?

4

1 に答える 1

2

それは hornetq のユーザー フォーラムの FAQ です...

HornetQ には、メッセージのオーバーフローに対処するさまざまな方法があり、メモリ不足から保護します。

  • オーバーフロー時にブロック
  • ディスクへのフロー (ページングと呼んでいます)
  • ドロップ (メッセージは消えるだけです。メッセージを失う余裕がある場合にのみ有効です)
  • エラー (最近 2.4 で導入されました。2.2 にはこの機能がありません)

システムをブロックするように設定すると、クライアントは、メッセージを消費した後にのみ到着するクレジットを待機します。

したがって、メッセージを消費するか、アドレス設定をページングとして設定します。

ページングの設定に関するドキュメント:

http://docs.jboss.org/hornetq/2.4.0.beta1/docs/user-manual/html/paging.html#paging.main.config

ブロッキング モードに関するドキュメント:

http://docs.jboss.org/hornetq/2.4.0.beta1/docs/user-manual/html/paging.html#d0e5213

于 2013-11-06T16:54:41.523 に答える