WebSphere eXtreme Scale kann die Belegung des Java-Heapspeichers für eine bestimmte BackingMap in Bytes genau schätzen. Mit dieser Funktion können Sie die Einstellungen für den Heapspeicher und die Bereinigungsrichtlinien für Ihre Java Virtual Machine korrekt messen. Das Verhalten dieses Features variiert mit der Komplexität der Objekte, die in die BackingMap eingefügt werden, und der Konfiguration der Map. Derzeit wird dieses Feature nur für verteilte Datengrids unterstützt. Lokale Datengridinstanzen unterstützen die Messung belegter Bytes nicht.
Die Anzahl der in den Messstatistiken berichteten belegten Bytes ist die Summe dieser vier Komponenten. Diese Werte werden auf Eintragsbasis in den Map-Operationen "insert" (Einfügen), "update" (Aktualisiere) und "remove" (Entfernen) berechnet, d. h., dass eXtreme Scale immer den aktuellen Wert für die Anzahl der Bytes hat, die eine bestimmte BackingMap belegt.
Wenn Datengrids partitioniert sind, enthält jede Partition einen Teil der BackingMap. Da die Messstatistiken auf der untersten Ebene des eXtreme-Scale-Codes berechnet werden, verfolgt jede Partition einer BackingMap ihre eigene Größe. Sie können die eXtreme Scale Statistik-APIs verwenden, um die kumulative Größe der Map sowie die Größe der einzelnen Map-Partitionen zu verfolgen.
Im Allgemeinen werden die Größendaten als Maß für den Trend der Datengröße über der Zeit und nicht als genaue Messung des von der Map belegten Heapspeichers verwendet. Wenn sich beispielsweise die berichtete Größe für eine Map von 5 MB auf 10 MB verdoppelt, können Sie davon ausgehen, dass sich die Speicherbelegung der Map verdoppelt hat. Der Ist-Messwert von 10 MB kann aus verschiedenen Gründen ungenau sein. Wenn Sie diese Gründe berücksichtigen und den bewährten Verfahren folgen, entspricht die Genauigkeit der Größenmesswerte nahezu der der Nachbearbeitung eines Java-Heapspeicherauszugs.
Aufgrund dieser Mehrdeutigkeit sollten diese Messwerte als Trenddaten behandelt werden, sofern die Mehrdeutigkeit nicht durch Designoptionen, bewährte Verfahren und Verständnis der Implementierungsoptionen die genauere Statistiken liefern können, ausgeschaltet wird.
eXtreme Scale geht davon aus, dass eine bestimmte Map die einzige Langzeitreferenz auf Schlüssel- und Werteobjekte, die sie enthält, besitzt. Wenn dasselbe 5-KB-Objekt in drei Maps eingefügt wird, erhöht sich die Größe jeder Map um 5 KB. Die Erhöhung ist gewöhnlich kein Problem, weil das Feature nur für verteilte Datengrids unterstützt wird. Wenn Sie dasselbe Objekt in drei verschiedene Maps auf einem fernen Client einfügen, erhält jede Map eine eigene Kopie des Objekts. Die Standardtransaktionseinstellungen für den Kopiermodus (COPY MODE) garantieren gewöhnlich, dass jede Map eine eigene Kopie eines bestimmten Objekts erhält.
public class ShippingOrder implements Serializeable,Cloneable{
public static final STATE_NEW = “new”;
public static final STATE_PROCESSING = “processing”;
public static final STATE_SHIPPED = “shipped”;
private String state;
private int orderNumber;
private int customerNumber;
public Object clone(){
ShippingOrder toReturn = new ShippingOrder();
toReturn.state = this.state;
toReturn.orderNumber = this.orderNumber;
toReturn.customerNumber = this.customerNumber;
return toReturn;
}
private void readResolve(){
if (this.state.equalsIgnoreCase(“new”)
this.state = STATE_NEW;
else if (this.state.equalsIgnoreCase(“processing”)
this.state = STATE_PROCESSING;
else if (this.state.equalsIgnoreCase(“shipped”)
this.state = STATE_SHIPPED:
}
}
Verwenden Sie die Methode MapStatsModule.getUsedBytes(), die Statistiken für eine einzige Map bereitstellt, einschließlich der Anzahl an Einträgen und der Trefferrate.
Einzelheiten finden Sie unter Statistikmodule.
Verwenden Sie die MBean-Statistik "MapUsedBytes". Sie können verschiedene Typen von JMX-Beans (Java Management Extensions) verwenden, um Implementierungen zu verwalten und zu überwachen. Jede MBean bezieht sich auf eine bestimmte Entität, z. B. eine Map, eXtreme Scale, einen Server, eine Replikationsgruppe oder ein Replikationsgruppen-Member.
Einzelheiten finden Sie unter Verwaltung mit Managed Beans (MBeans).
Sie können die Leistung Ihrer Anwendungen mit den PMI-Modulen überwachen. Verwenden Sie insbesondere die PMI-Module für Container, die in WebSphere Application Server integriert sind.
Einzelheiten finden Sie unter PMI-Module.
Sie können die Speicherbelegungsstatistiken in der Konsole anzeigen. Einzelheiten finden Sie unter Überwachung mit der Webkonsole.
Alle beschriebenen Methoden greifen auf denselben Basismesswert für die Speicherbelegung einer bestimmten BaseMap-Instanz zu. Die Laufzeitumgebung von WebSphere eXtreme Scale versucht, die von den in der Map gespeicherten Schlüssel- und Werteobjekten belegten Bytes des Heapspeichers und die Gemeinkosten für die Map bestmöglich selbst zu berechnen. Sie können anzeigen, wie viel Heapspeicher die einzelnen Maps im gesamten verteilten Datengrid belegen.
In den meisten Fällen liegt der von WebSphere eXtreme Scale für eine bestimmte Map berichtete Wert sehr nahe bei dem Wert, der von der Heapspeicherauszugsanalyse berichtet wird. WebSphere eXtreme Scale misst seine eigenen Gemeinkosten genau, kann aber nicht jedes potenzielle Objekt berücksichtigen, dass in eine Map eingefügt wird. Durch die Einhaltung der unter Agent für die Messung der Cachegröße im Hinblick auf genaue Schätzungen der Speicherbelegung optimieren beschriebenen bewährten Verfahren kann die Genauigkeit der ermittelten Bytemesswerte von WebSphere eXtreme Scale erhöhen.