1

製品で apache servicemix と apache activeMQ を使用しています。ここで HttpConnector の場合、パフォーマンスの問題が見つかりました。

一度に合計リクエスト数を増やすと、数が増えると交換キューがコンポーネントのいずれかでスタックします。すべてのリクエストの処理が開始された後、ほとんどの交換は終了コンポーネントまたはディスパッチャー* コンポーネントでスタックします。コンテナのヒープ サイズが非常に大きくなり、しばらくするとクラッシュして自動的に再起動します。

トランザクションマネージャーも使用しました。flowname は jms とも呼ばれます。

緊急に何らかの解決策が必要です。

4

2 に答える 2

0

一度に合計リクエスト数を増やすと、数が増えると交換キューがコンポーネントのいずれかでスタックします。

ActiveMQ には、プロデューサーがメッセージを書き込むのを停止するメカニズムがあり、「フロー制御」と呼ばれます。プロデューサーはコンシューマーよりも高速であるようです (または、コンシューマーは速度が安定していません)。そのため、最初に AMQ の memoryLimit 構成を確認します (これも定義します)。または特別なキューが可能)。増やしてみてください。

<destinationPolicy>
  <policyMap>
    <policyEntries>

      <policyEntry topic="FOO.>" producerFlowControl="false" memoryLimit="1mb">
        <dispatchPolicy>
          <strictOrderDispatchPolicy/>
        </dispatchPolicy>
        <subscriptionRecoveryPolicy>
          <lastImageSubscriptionRecoveryPolicy/>
        </subscriptionRecoveryPolicy>
      </policyEntry>

    </policyEntries>
  </policyMap>

また、オプションで受信メッセージの処理の停止を無効にすることができproducerFlowControl="false"ます。そのため、すべてのバッファが使用される場合、AMQ の速度が低下し、すべてのメッセージが HD に保存されます。詳細プロデューサー フロー制御メッセージ カーソル

コンテナのヒープ サイズが非常に大きくなり、しばらくするとクラッシュして自動的に再起動します。

ただし、とにかく、これはアプリのチューニングの方法にすぎず、解決策ではありません。リソースが不足する場合が常にあるためです:)

受信リクエストを制限するか、 Poundを使用してそれらのバランスをとる必要があります

于 2010-04-19T20:32:45.370 に答える
0

「amqPersistenceAdapter」の代わりにKahaDBを使用してみてください。これに切り替えるだけで、スループットが大幅に向上しました。

使用した設定は次のとおりです (アプリケーションに大きく依存しますが、「enableJournalDiskSyncs」が false に設定されていることを確認してください)。

    <persistenceAdapter>
        <kahaDB directory="../data/kaha"
            enableJournalDiskSyncs="false"
            indexWriteBatchSize="10000"
            indexCacheSize="1000" />
    </persistenceAdapter>
于 2010-12-28T17:29:37.663 に答える