Problem
Manchmal kann es mit einem SEGV zu JVM-Abstürzen kommen. All diese treten innerhalb des kompilierten JIT-Codes in com.adobe.cq.social.datastore.as.impl.UGCCDataServiceImpl auf. Es ist möglich, dass es hier einen Java-Bug gibt, der einen sehr lokalen Satz von Methoden beeinflusst.
Es gibt eine Problemumgehung, indem die JIT-Parameter für diese Klasse spezifiziert werden, die den Anschein haben, dass sie das Problem mildern. Diese Aufgabe besteht darin, die Problemumgehung und die zutreffenden Umstände zu erfassen und zu dokumentieren.
Wer benötigt diese Problemumgehung?
- Sie verwenden die Social Communities Extension mit einem konfigurierten Anbieter für Social Cloud Storage.
- Sie verwenden AEM auf 64-Bit Linux mit der 64-Bit-JVM-Version 1.7 von Oracle.
- Die JVM stürzt mit dem Adobe Experience Manager ab.
- Die JVM-Abstürze werden in com.adobe.cq.social.datastore.as.impl.UGCCDataServiceImpl
gemeldet und die JVM-Abstürze werden von einer Datei hs_err_pid<<PROCESS-ID>>.log, die im CRX-Quickstart-Verzeichen von CQ aufscheint, begleitet. Die grundlegenden Informationen zur Ursache des JVM-Absturzes werden in dieser Datei angezeigt. Suchen Sie im Fall von Abstürzen, die diese Problemumgehung ansprechen, nach etwas wie diesem:
# A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00002aaaabf4d59c, pid=17837, tid=1276991808 # # JRE version: Java(TM) SE Runtime Environment (7.0_65-b17) (build 1.7.0_65-b17) # Java VM: Java HotSpot(TM) 64-Bit Server VM (24.65-b04 mixed mode linux-amd64 compressed oops) # Problematic frame: # J 3816 C2 com.adobe.cq.social.datastore.as.impl.UGCCDataServiceImpl.readDocument(Ljava/lang/String;)Ljava/util/Map; (287 bytes) @ 0x00002aaaabf4d59c [0x00002aaaabf4d4e0+0xbc]
Die wichtige Information ist die letzte Zeile in diesem Beispiel, die angibt, dass das problematische Frame com.adobe.cq.social.datastore.as.impl.UGCCDataServiceImpl involviert, eine Komponente der Serviceverbindung der Cloud.
Was ist die Problemumgehung?
Die Problemumgehung verwendet zwei Ansätze: Verwenden Sie eine JVM, die weniger anfällig für das Problem ist, und eine JVM-Option, um die native Kompilierung des spezifischen Problemcodes zu deaktivieren.
Zur Zeit der Veröffentlichung dieser Anmerkung, ist die neueste Version von Java 1.7, die von Oracle verfügbar ist, 1.7_65. Die Empfehlung dieser Problemumgehung ist das Wechseln von 1.7_65 zu einer früheren Version.
Bei Verwendung von 1.7_ 65 besteht die Problemumgehung weiter aus der Deaktivierung der „Just in Time“-Kompilierung (JIT) einer bestimmten Problemklasse und der Methode über die Java -XX:CompileCommand=exclude Option. Insbesondere -XX:CompileCommand=exclude,com.adobe.cq.social.datastore.as.impl.UGCCDataServiceImpl::readDocument"
Wie kann ich diese Problemumgehung in meiner Umgebung implementieren?
Diese Implementierung erfordert eine Überprüfung und eine mögliche Aktualisierung Ihrer installierten Version von Java und die Aktualisierung des Startup-Skripts, das Sie zum Starten von AEM verwenden. Siehe Oracle-Dokumentation bezüglich der Auswahl, des Herunterladens, Installierens und Konfigurierens von jdk1.7.0_65 64-bit für Linux x86-64, um Java zu aktualisieren.
Im Allgemeinen wird empfohlen, AEM über die Start-Skripten im crx-quickstart/bin/start zu starten. Es ist jedoch üblich, dass benutzerdefinierte Startup-Skripten verwendet werden können. Wenn crx-quickstart/bin/start verwendet wird, muss die folgende Option hinzugefügt werden:
CQ_JVM_OPTS="${CQ_JVM_OPTS} -XX:CompileCommand=exclude,com.adobe.cq.social.datastore.as.impl.UGCCDataServiceImpl::readDocument"
HINWEIS: Sie müssen den standardmäßigen bin/start überprüfen und sehen, wo genau er zugehören würde.