2010-11-29 8 views
2

Wir verwenden eine ältere Version von ActiveMQ (5.3.2) (Is activemq reliable?)ActiveMQ Speicherverbrauch durch das Dach (Auslagerungsdatei) ... was tun?

Wir haben Persistenz entfernt, weil wir mehr Geschwindigkeit brauchten. Unser Mitarbeiter kann mit den Nachrichten Schritt halten, obwohl die Warteschlange normalerweise auf 0 steht, nachdem etwa 45000 Nachrichten verarbeitet wurden (eine Nachricht ist normalerweise 100 Zeichen lang), beträgt die Page-Datei 8 GB !! Es hört jedoch nicht auf, es geht weiter, bis 15 GB erreicht sind (Unser Server hat 16 GB Speicher)!

Das Stoppen des ActiveMQ-Prozesses bereinigt diese Auslagerungsdatei nicht, sie bleibt auf unbestimmte Zeit riesig.

das sind die Einstellungen, die wir verwenden:

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

und

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

Was brauchen wir, Speichernutzung in 'normalen' Niveau zu halten zu tun?

Unser Server: Windows 2003 (64bit). ActivemQ (5.3.2), mit Java64-Bit (1.6.0__22)

Antwort

1

Wenn der Speicher nicht freigegeben wird, selbst nachdem Sie ActiveMQ beendet haben, bin ich versucht zu sagen, dass es ein Fehler im JDK ist. Haben Sie in Erwägung gezogen, auf eine stabilere Version herunterzustufen? Versuchen Sie auch, dies mit einem 32-Bit-JDK auszuführen, und prüfen Sie, ob Sie das Problem mit kleineren maximalen Speichereinstellungen reproduzieren können.

+0

afghani: Ich habe bereits von 5.4.1 wegen kontinuierlichen Absturz heruntergestuft. Wäre super, wenn klar ist, welches die stabile Version ist; ^) Auf jeden Fall werde ich versuchen zu sehen, ob bei einer 32 Bit Java Version die gleichen Dinge passieren. Gute Idee. – Toad

+1

@Toad: Ich denke er meinte, das Java Development Kit auf eine frühere Version und Plattform herunterzurüsten. – Bamieater

1

Ich hatte keine Probleme auf einem Windows 7-Rechner, mit ActiveMQ 5.3.0, jdk1.6.0_18 (64 Bit) und einem Test-Setup mit PHP. Mit einigen Testskripten habe ich in 585 Sekunden 10.000.000 Nachrichten in die Warteschlange geschrieben. Das sind ungefähr 17000 Nachrichten pro Sekunde. Alles lief auf demselben Rechner (mein Laptop, 4 GB mem, Intel i3 CPU) und verwendete TCP-Sockets, um sich mit der Warteschlange zu verbinden.

+0

gut zu lesen, dass es getan werden kann – Toad

0

Können Sie Ihre vollständige ActiveMQ-Konfiguration posten? Haben Sie persistent = false für den ActiveMQ-Broker festgelegt? Ich denke, was passiert ist, weil Sie die Flusskontrolle ausgeschaltet haben und nur 20 MB Speicher für den Broker verwendet haben - Ihre Nachrichten werden im temporären Speicher auf die Festplatte ausgelagert. Wenn persistent = false sollte dies nicht passieren - aber Flow Control aktivieren - es wird helfen;)