Tipps zur Fehlerbehebung beim dynamischen Cache-Service
Der dynamische Cache-Service arbeitet auf der JVM (Java Virtual Machine) eines Anwendungsservers und fängt Aufrufe für cachefähige Objekte ab.
Servlets werden nicht im Cache gespeichert
Empfohlene Maßnahmen |
---|
Aktivieren Sie das Servlet-Caching. Wählen Sie auf der Seite mit den Einstellungen des Web-Containers der Administrationskonsole das Kontrollkästchen Servlet-Caching aktivieren aus. |
Cacheeinträge werden nicht auf die Platte geschrieben
Erläuterung | Empfohlene Maßnahmen |
---|---|
Cacheeinträge werden auf die Platte geschrieben, wenn die Kapazität des Cache erschöpft ist und neue Einträge dem Speichercache hinzugefügt werden. Cacheeinträge werden auch auf die Platte geschrieben, wenn Sie in der Administrationskonsole die Option "Auf Platte zurückschreiben" ausgewählt haben und der Server gestoppt wird. | Vergewissern Sie sich, dass die Option "Auslagerung auf Platte" auf der Seite "Einstellungen des dynamischen Cache-Service" der Administrationskonsole ausgewählt ist. Vergewissern Sie sich außerdem, dass die auf die Platte geschriebenen Cacheeinträge serialisierbar sind und dass die Konfigurationseigenschaft PersistToDisk für diese Einträge auf false gesetzt ist. |
Einige Servlets werden nicht repliziert oder auf die Platte geschrieben
Empfohlene Maßnahmen |
---|
Vergewissern Sie sich, dass die Attribute und die Antwort serialisierbar sind. Wenn Sie die Attribute
nicht speichern möchten, verwenden Sie die folgende Eigenschaft in Ihrer Cacherichtlinie:
<property name="save-attributes">false</property> |
Der dynamische Cache-Service speichert keine Fragmente im Cache "am Rande des Netzes".
Empfohlene Maßnahmen |
---|
Setzen Sie die Eigenschaft "EdgeCacheable" in der Cacherichtlinie für die Einträge auf true, die im Cache am Rande des Netzes gespeichert werden sollen. <property name="EdgeCacheable">true</property> |
Vom dynamischen Cache-Service vorgenommene Invalidierungen werden nicht an das IBM HTTP Server-Plug-in (IHS) gesendet
Erläuterung | Empfohlene Maßnahmen |
---|---|
Die Datei DynaCacheEsi.ear ist erforderlich, um Invalidierungen an externe Caches zu senden. | Installieren Sie die Datei DynaCacheEsi.ear über die Administrationskonsole. |
Cacheeinträge werden häufig gelöscht.
Problem | Erläuterung | Empfohlene Maßnahmen |
---|---|---|
Der Cache ist voll, und neue Einträge werden dem Cache hinzugefügt. | Cacheeinträge werden gelöscht, wenn der Cache voll ist und dem Cache neue Einträge hinzugefügt werden. Das LRU-Löschverfahren entfernt immer den Eintrag, der am längsten nicht verwendet wurde, um Platz für die neuen Einträge zu schaffen. | Wählen Sie auf der Seite "Einstellungen des dynamischen Cache-Service" der Administrationskonsole die Option "Auslagerung auf Platte" aus, damit die Einträge auf die Platte geschrieben werden. Sie können aber auch den Cache vergrößern, damit mehr Einträge im Cache Platz haben. |
Einträge im Plattencache mit einem Zeitlimit von 0 verfallen nach einem Tag
Erläuterung | Empfohlene Maßnahmen |
---|---|
Die maximale Lebensdauer eines Eintrags im Plattencache beträgt 24 Stunden. Wenn in der Cacherichtlinie ein Zeitlimit von 0 konfiguriert ist, bleiben diese Einträge einen ganzen Tag lang im Plattencache, sofern sie nicht vorher gelöscht werden. | Setzen Sie das Zeitlimit für die Cacherichtlinie auf einen Wert kleiner als 0. |
Es können keine Cacheeinträge am Rande des Netzes überwacht werden.
Erläuterung | Empfohlene Maßnahmen |
---|---|
Verwenden Sie den dynamischen Cachemonitor, um die Inhalte von Speichercache, Plattencache und externen Caches, z. B. Edge-Cache, zu überwachen. Damit der Cache des ESI-Prozessors im Cachemonitor sichtbar ist, muss die Anwendung DynaCacheEsi.ear installiert und die Eigenschaft esiInvalidationMonitor in der Datei plugin-cfg.xml auf true gesetzt sein. |
Setzen Sie die Eigenschaft esiInvalidationMonitor in der Datei plugin-cfg.xml auf true. Weitere Informationen zum Überwachen der Aktivitäten des dynamischen Cache-Service finden Sie im Artikel "Cacheinformationen anzeigen". |
Cache für die Umgebung optimieren
Empfohlene Maßnahmen |
---|
Verwenden Sie Tivoli Performance Viewer, um das Caching-Verhalten für Ihre Anwendungen zu untersuchen.
Beachten Sie außerdem die folgenden Punkte:
|
Dateien des Plattencache nach der Installation des Fixpack oder eines neuen Release bereinigen
Symptom | Problem | Empfohlene Maßnahmen |
---|---|---|
Wenn der Server für die Verwendung des Plattencaches konfiguriert ist, müssen Sie die Dateien für den Plattencache löschen, weil diese Dateien mit der früheren Version nicht kompatibel sind. | Wenn Sie die alten Dateien des Plattencaches nicht entfernen, wird eine Ausnahme des Typs ClassCastException
in der Datei systemerr.log aufgezeichnet, wenn Sie von der Platte auf den Cache zugreifen.
Anmerkung: Dieser Artikel referenziert eine oder mehrere Protokolldateien des Anwendungsservers. Alternativ dazu wird empfohlen, den Server
so zu konfigurieren, dass er die HPEL-Protokoll- und -Traceinfrastruktur (High Performance Extensible Logging) verwendet und nicht die Dateien SystemOut.log , SystemErr.log,
trace.log und activity.log auf verteilten oder IBM® i-Systemen. Sie können HPEL auch in Verbindung
mit Ihren nativen z/OS-Protokolleinrichtungen verwenden. Wenn Sie HPEL verwenden, können Sie
mit dem Befehlszeilentool LogViewer im Verzeichnis "bin" des Serverprofils auf alle Ihre Protokoll- und Tracedaten zugreifen. Weitere Informationen zur Verwendung von
HPEL finden Sie in der Dokumentation zum Einsatz von HPEL für die Fehlerbehebung in Anwendungen.
|
Führen Sie zum Löschen des Plattencaches die folgenden Schritte aus:
|
Attribut "flush" in jedem Tag <jsp:include> in der cachefähigen JSP-Datei auf "true" setzen
Setzen Sie das Attribut "flush" in jedem <jsp:include>-Tag in der cachefähigen JSP-Datei auf "true".
Symptom | Problem | Beschreibung | Empfohlene Maßnahmen |
---|---|---|---|
Wenn Sie JSP-Dateien (JavaServer Pages) aus dem dynamischen Cache abrufen, wird ein Teil der Seite nicht angezeigt. | Das Attribut "flush" wird im Tag <jsp: include> in der JSP-Datei auf "false" gesetzt. | Wenn die cachefähige JSP-Datei eine weitere JSP-Datei enthält und das Attribut "flush" im Tag <jsp: include> auf "false" gesetzt ist, werden alle Daten, die vor dem Tag <jsp: include> in den übergeordneten Ausgabedatenstrom geschrieben werden, nicht zwischengespeichert. | Setzen Sie flush=true in jedem Tag <jsp: include> in der cachefähigen JSP-Datei. |
![[z/OS]](../images/ngzos.gif)
E/A-Aktivität des Dateisystems, wenn der Anwendungsserver im Leerlauf ist
Symptom | Erläuterung | Mögliche Maßnahme | Empfohlene Maßnahmen |
---|---|---|---|
Sie stellen E/A-Aktivitäten im Dateisystem fest, obwohl der Anwendungsserver im Leerlauf ist. WebSphere Application Server fragt das Hierarchical File System (HFS) auch dann nach der Datei cachespec.xml ab, wenn keine Cacherichtlinien definiert sind. | Der dynamische Cache sendet in einem Intervall von 30 Sekunden Sendeaufrufe an das Dateisystem, um festzustellen, ob Aktualisierungen an der Datei für die Cacherichtlinie vorgenommen wurden. Auf diese Weise ist der dynamische Cache in der Lage, alle geänderten Cacherichtlinien automatisch zu aktualisieren. | Der dynamische Cache ist standardmäßig aktiviert, weil sich mehrere Systemkomponenten in Bezug auf die Leistung auf diesen Service stützen. Sie können den dynamischen Cache-Service mit einem wsadmin-Script oder mit der Administrationskonsole inaktivieren. Weitere Informationen zum Aktivieren des dynamischen Cache-Service finden Sie im Artikel "Dynamischen Cache-Service verwenden". Vorsicht: Wenn Sie den dynamischen Cache-Service inaktivieren, arbeiten die Sicherheitskomponenten
möglicherweise langsamer, weil diese die Funktionen für verteilte Zuordnung des dynamischen Cache-Service
nutzen.
|
Setzen Sie flush=true in jedem Tag <jsp: include> in der cachefähigen JSP-Datei. |
Einschränkung des dynamischen Caches bei der Verwendung des JSTL-Tag <c:import> für das Einfügen von Fragmenten
Problem | Beschreibung | Empfohlene Maßnahmen |
---|---|---|
Wenn ein cachefähiges Fragment über das JSTL-Tag (JavaServer Pages Standard Tag Library) <c:import> eingefügt wird, wird bei einem Cachetreffer ein Teil des Seiteninhalts nicht mehr angezeigt, und ein Teil des Seiteninhalts erscheint zweimal. | Der dynamische Cache verlässt sich darauf, dass der Inhalt vor und nach dem Einfügen eines Fragments
auf die Platte geschrieben wird (Flush), sodass der übergeordnete Inhalt vor dem Einschluss nicht verloren geht und um zu verhindern, dass der untergeordnete Inhalt in das übergeordnete Fragment
integriert wird.
Im Fall des JSTL-Tag <c:import> wird das Attribut "flush=true", das den Inhalt des übergeordneten Writer auf die Platte schreibt, bevor das untergeordnete Fragment aufgerufen wird, jedoch nicht unterstützt. Außerdem puffert JSTL die Antworten, sodass der Inhalt des untergeordneten Writer nach dem Einfügen des untergeordneten Fragments nicht auf die Platte geschrieben wird. Deshalb wird die untergeordnete Antwort in den übergeordneten Inhalt integriert. Einschränkung:
Der dynamische Cache gibt mehrere Include-Anweisungen zurück, wenn das JSTL-Tag
<c:import> in einer zwischengespeicherten JSP-Datei verwendet wird. |
Sie können dieses Problem vermeiden, indem Sie die Anweisung <c:import> in Methodenanweisungen
out.flush einschließen:
|
Nachrichten des Service Integration Bus (SIB) werden wiederholt
Die Nachrichten des Service Integration Bus werden in den Protokollen der Cluster-Member, die eine Produktionsanwendung bereitstellen, wiederholt.
Problem | Empfohlene Maßnahmen |
---|---|
In einer Mehrzellenumgebung werden in den Protokollen der Cluster-Member, die eine Produktionsanwendung bereitstellen, die folgenden
Nachrichten wiederholt.
|
Vergewissern Sie sich zunächst, dass jedes SIB-Member in der fernen Zelle gestartet wurde. Stellen Sie dann sicher, dass der Port
SIB_ENDPOINT_ADDRESS für jedes SIB-Member in der fernen Zelle oder Stammgruppe richtig angegeben wurde. Ist der falsche Port angegeben, löschen Sie
die Konfiguration für abgehende Verbindungen "--setup=dynacacheOutSIB --delete..." und geben Sie den richtigen Port an.
Wenn alles fehlerfrei funktioniert, wird eine Nachricht wie die folgende ausgegeben:
|
Messaging-Komponente der Plattform kann die Benutzer-ID nicht authentifizieren
Erläuterung | Empfohlene Maßnahmen |
---|---|
In einer Mehrzellenumgebung tritt bei einem SIB-Member der folgende Fehler auf:
Diese Nachricht kann irreführend sein, da der dynamische Cache-Service keine sicheren Busse verwendet. |
Diese Nachricht kann auf eines der folgenden Probleme zurückzuführen sein: Der SIB-Server empfängt eine Anforderung, die sich auf ein nicht existentes Busziel bezieht. Vergewissern Sie sich, dass bei Ausführung von "--setup=dynacacheOutSIB" und "--setup=dynacacheECA" in der sendenden Zelle der richtige Name für die ferne Zelle verwendet wurde. Es sind keine Member des Service Integration Bus verfügbar. Dieses Problem tritt häufig auf, weil bei der Konfiguration der eingehenden Verbindungen "--setup=dynacacheInSIB" der falsche Cluster angegeben wird. Vergewissern Sie sich, dass für die Option "--cluster" kein anderer Cluster als der SIB-Cluster angegeben wird. |
Die eindeutige ID der Messaging-Engine stimmt nicht mit der im Datenspeicher gefundenen ID überein.
Erläuterung | Empfohlene Maßnahmen |
---|---|
In einer Mehrzellenumgebung tritt bei einem SIB-Member der folgende Fehler auf:
|
Stoppen Sie den Server, und löschen Sie das Verzeichnis in WAS-Installationsstammverzeichnis\profiles\AppSrv01\filestores\com.ibm.ws.sib, das dem SIB-Member entspricht, und starten Sie den Server erneut. |
Script dynacacheJMSSIB kann Datei DynacacheMessageHandler.ear nicht lokalisieren
Erläuterung | Empfohlene Maßnahmen |
---|---|
In einer Mehrzellenumgebung kann das Script dynacacheJMSSIB die Datei DynacacheMessageHandler.ear nicht lokalisieren, und im Protokoll erscheint
die folgende Nachricht:
|
Führen Sie das Script dynacacheJMSSIB im Verzeichnis WAS-Installationsstammverzeichnis/profiles/PROFILE_NAME/bin aus, damit es die Datei ../../../util/dynacacheJMSSIB.py and ../../../installableApps/DynacacheMessageHandler.ear unter den entsprechenden relativen Pfaden lokalisieren kann. |