2010-04-06 2 views
1

내 제품에 apache servicemix 및 apache activeMQ를 사용하고 있습니다. 여기에 HttpConnector의 경우 성능 문제가 발견되었습니다.Servicemix ActiveMQ 성능 문제

한 번에 총 요청 수를 늘리면 숫자가 늘어남에 따라 교환 대기열이 구성 요소 중 하나에서 멈추게됩니다. 모든 요청이 처리되기 시작하면 대부분의 교환 프로그램이 최종 구성 요소 또는 Dispatcher * 구성 요소에서 멈추게됩니다. 컨테이너의 힙 크기는 매우 높아지고 시간이 지나면 자동으로 충돌하고 다시 시작됩니다.

나는 또한 transactionmanager를 사용했다. flowname은 또한 jms로 언급됩니다.

은 급한 해결책이 필요합니다.

답변

0

"amqPersistenceAdapter"대신 KahaDB을 사용해 볼 수 있습니다. 우리는 막 전환으로 전환하여 엄청난 처리량 증가를 보았습니다. 여기

우리가 사용하는 설정입니다

<persistenceAdapter> 
     <kahaDB directory="../data/kaha" 
      enableJournalDiskSyncs="false" 
      indexWriteBatchSize="10000" 
      indexCacheSize="1000" /> 
    </persistenceAdapter> 
(응용 프로그램에 크게 의존하지만, 확실히 "enableJournalDiskSyncs"을 만들은 false로 설정됩니다)
0

한 번에 총 요청 수가 증가하면 숫자가 늘어남에 따라 교환 대기열이 구성 요소 중 하나에서 멈추게됩니다.

ActiveMQ는 프로듀서 작성 메시지를 멈추게하는 메커니즘이 있는데, "흐름 제어"라고합니다. 프로듀서가 소비자보다 빠르거나 (소비자가 속도가 안정적이지 않은 것 같습니다) 먼저 memoryLimit 구성을 확인하십시오. AMQ (가능하거나 특별 대기열을 정의 할 수도 있음). 그것을 증가 시키십시오.

<destinationPolicy> 
    <policyMap> 
    <policyEntries> 

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

    </policyEntries> 
    </policyMap> 
또한

, 당신은 producerFlowControl="false" 옵션을 사용하여 들어오는 메시지를 처리의 정지를 해제 할 수 있습니다. 따라서 모든 버퍼가 사용될 경우 AMQ가 느려지고 모든 메시지가 HD에 저장됩니다. 더 많은 정보 Producer Flow ControlMessage Cursors

컨테이너의 힙 크기로 매우 높은 도달 시간 후 충돌하고 자동으로 다시 시작됩니다.

어쨌든,이 앱 튜닝의 단지 방법은 일부 자원이

당신은 들어오는 요청 또는 균형을 제한해야합니다 :) 밖으로 실행할 때 항상이 사건을 가지고 있기 때문에, 그것은 해결책이 아니다 그들 fe 사용 Pound