2010-11-29 3 views
2

ActiveMQ (5.3.2)의 이전 버전을 사용 중입니다. (Is activemq reliable? 참조)지붕을 통한 ActiveMQ 메모리 소비 (페이지 파일) ... 어떻게해야합니까?

더 많은 속도가 필요했기 때문에 지속성을 제거했습니다. 작업자는 메시지를 따라갈 수 있지만 일반적으로 대기열이 0 인 경우에도 약 45000 개의 메시지가 처리 된 후 (일반적으로 메시지 길이는 100 자임) 페이지 파일은 8GB입니다! 그래도 거기서 멈추지 않고, 15GB에 도달 할 때까지 계속됩니다 (우리 서버에는 16GB의 메모리가 있습니다)!

ActiveMQ 프로세스를 중지해도이 페이지 파일이 정리되지 않고 무한대로 남아 있습니다.

이 우리가 사용하는 설정은 다음과 같습니다

<policyEntry queue=">" producerFlowControl="false" memoryLimit="2gb"> 
</policyEntry> 

<systemUsage> 
    <systemUsage> 
     <memoryUsage> 
      <memoryUsage limit="20 mb"/> 
     </memoryUsage> 
     <storeUsage> 
      <storeUsage limit="1 gb"/> 
     </storeUsage> 
     <tempUsage> 
      <tempUsage limit="100 mb"/> 
     </tempUsage> 
    </systemUsage> 
</systemUsage> 

우리가 '정상'수준의 메모리 사용량을 유지하기 위해 어떻게해야합니까?

Google 서버 : Windows 2003 (64 비트). ActiveMQ (5.3.2), Java64 비트 (1.6.0__22)

답변

1

ActiveMQ를 중지 한 후에도 메모리가 해제되지 않으면 JDK의 버그라고 유혹을 느낍니다. 더 안정적인 버전으로 다운 그레이드를 고려 했습니까? 또한 이것을 32 비트 JDK로 실행하고 더 작은 최대 메모리 설정으로 문제를 재현 할 수 있는지 확인하십시오.

+0

afghani : 나는 지속적으로 충돌하기 때문에 5.4.1에서 이미 다운 그레이드했습니다. 어느 것이 안정적인 버전인지 확실하다면 좋을 것입니다. ^) 어쨌든 32 비트 자바 버전에서 같은 일이 일어나는지 보도록하겠습니다. 좋은 생각. – Toad

+1

@Toad : 그는 자바 개발 킷을 이전 버전과 플랫폼으로 다운 그레이드한다고 생각했다. – Bamieater

1

Windows 7 컴퓨터에서 ActiveMQ 5.3.0, jdk1.6.0_18 (64 비트) 및 PHP로 테스트 설정과 관련된 문제가 발생하지 않았습니다. 일부 테스트 스크립트를 사용하여 585 초 만에 10.000.000 개의 메시지를 큐에 기록했습니다. 초당 약 17000 개의 메시지입니다. 모든 것이 동일한 컴퓨터 (노트북, 4GB 메모리, Intel i3 CPU)에서 실행되었고 TCP 소켓을 사용하여 대기열에 연결되었습니다.

+0

좋은 결과를 얻을 수 있음 – Toad

0

전체 ActiveMQ 구성을 게시 할 수 있습니까? ActiveMQ 브로커에 persistent = false를 설정 했습니까? 제 생각에는 흐름 제어를 해제하고 브로커에서 20MB의 메모리 만 사용하도록 허용했기 때문에 메시지가 임시 저장 장치에 디스크로 페이징되고 있기 때문입니다. persistent = false 일 경우 이것은 발생하지 않아야하지만 흐름 제어를 활성화하면 도움이됩니다.)

관련 문제