Beispiele für request.log-Analyse | AEM
Die Datei request.log von Adobe Experience Manager (AEM) bietet eine umfangreiche Informationsquelle, einschließlich Antwortzeiten, die für die Analyse von Leistungsproblemen von entscheidender Bedeutung ist. Dieser Artikel enthält mehrere Beispiele, um diesen Punkt zu veranschaulichen.
Beschreibung description
Umgebung
Experience Manager 6.5
Problem/Symptome
Die Adobe Experience Manager-request.log
(AEM) enthält verschiedene nützliche Informationen, z. B. die Antwortzeit, um Leistungsprobleme zu analysieren. Im Folgenden finden Sie eine Liste von Beispielanalysen unter Verwendung von Linux-Befehlen (einschließlich einiger externer Befehle wie Ruby [
1]
und Datamash [
2]
).
Installationshandbücher
[
1]
https://www.ruby-lang.org/en/documentation/installation/
[
2]
https://www.gnu.org/software/datamash/download/
Auflösung resolution
Inhaltsverzeichnis
a. Einführung
request.log
b. Vorbereitungsschritte
- Datenbereinigung
- Neustart-Zeit
- Anzahl der Zugriffe pro Stunde
- Maximale gleichzeitige Verarbeitung
- Aufteilen einer Protokolldatei
- Zusammenführen von Anforderungsdatensätzen und Antwortdatensätzen
C. Beispiele für Analysen
- Die schwersten Zugriffe
- Zugriff auf fehlende Antwort
- Langsame Zugriffe
- Zeitreihendaten der Antwortzeit
- Minimum, Mittelwert (Durchschnitt), Median, maximale Reaktionszeit
- Anzahl der Zugriffe pro Zeitraum
- Anzahl der Antwortstatus pro Zeitraum
- Häufigste URLs
- Datensätze für einen
request.log
Datensatzaccess.log
T. Schlussfolgerung
a. Einführung
Das Format von request.log:
AEM 6.5 generiert standardmäßig request.log
im folgenden Format. Aufgrund einer Systembeschränkung werden die Befehlszeilen in diesem Artikel als Bilder anstatt als einfacher Text angezeigt.
Beispiel für request.log
:
In diesem Artikel wird eine Zeile mit "->
" als „Anfragedatensatz“ bezeichnet. Eine Zeile mit "<
-" ist ein „Antwortdatensatz“.
Anforderungsdatensatz:
Wenn eine Anfrage von AEM empfangen wird, wird ein Anfragedatensatz protokolliert. Sie enthält das Datum und die Uhrzeit des Empfangs, die Anfrage-ID, die Anfragemethode und die URL.
Antwortdatensatz:
Wenn AEM auf eine Anfrage antwortet, wird ein Antwortdatensatz protokolliert. Sie enthält das Datum und die Uhrzeit der Antwort, die Anfrage-ID, den Status-Code, den Inhaltstyp und die Antwortzeit (in Millisekunden).
Das entsprechende Handbuch finden Sie unter Interpretieren der request.log.
b. Vorbereitungsschritte
Schritt 1. Datenbereinigung
Bevor wir uns mit der Analyse von request.log
befassen, müssen die Protokolldatensätze standardisiert werden.
Der erste sed
-Befehl entfernt einen zusätzlichen Leerraum in den Content-Type-Antwortdatensätzen, um eine falsche Feldtrennung mit Leerraum zu verhindern. Der Ruby-Befehl (siehe [
1]
oben zur Installation von Ruby) konvertiert das Datumsformat in ISO 8601. Der Ruby-Befehl trennt außerdem Datum und Uhrzeit durch Leerzeichen anstelle eines Doppelpunkts.
Schritt 2. Zeitpunkt des Neustarts
Beim Neustart von AEM und einer Service Pack-Installation wird die Anfrage-ID von request.log
zurückgesetzt. Die Anfragedatensätze mit der Anfrage-ID = 0
zeigen an, dass es diese Arten von Vorgängen geben kann.
Im obigen Beispiel wurden Anfrage-IDs auf 0 bei 13:49 :08: 13::26: zurückgesetzt.
Schritt 3. Anzahl der Zugriffe pro Stunde
Zählen Sie die Anzahl der Zugriffe pro Stunde und den Zeitbereich der request.log
.
Schritt 4. Maximale gleichzeitige Verarbeitung
Die Anzahl der gleichzeitigen Verarbeitungen hilft, die Serverauslastung der AEM zu erraten.
Standardmäßig ist die maximale Anzahl gleichzeitiger Verbindungen für Jetty in AEM auf 200 festgelegt. Nach Abschluss der Antwort wird der Socket verzögert freigegeben. Wenn die Anzahl der gleichzeitigen Verarbeitungen etwa 170 überschreitet, kann sie keine neuen Anfragen mehr akzeptieren.
Schritt 5. Aufteilen einer Protokolldatei
Die Anfrage-ID von request.log
wird beim Neustart von AEM oder bei der Installation eines Service Packs zurückgesetzt. Aufgrund dieses Verhaltens kann die Analyse falsch sein, wenn ein request.log
solche Vorgänge enthält. Um eine präzise Analyse durchzuführen und die gleichzeitig verarbeitete Dateigröße zu reduzieren, teilen Sie die request.log
mithilfe von Anfragedatensätzen mit dem ID = 0
auf.
Schritt 6. Anfrage- und Antwortdatensätze zusammenführen
Das Zusammenführen von Anfrage- und Antwortdatensätzen anhand der Anfrage-ID erleichtert das Erkennen von Startproblemen. Diese zusammengeführte Protokolldatei wird in den späteren Beispielen verwendet.
Der letzte sed
-Befehl fügt eine Platzhalterantwort zu Anfragedatensätzen hinzu, die keinen entsprechenden Antwortdatensatz haben. Es können auch Antwortdatensätze ohne Anfragedatensätze vorhanden sein. Aber sie sind ignorierend, da sie normalerweise kein Thema für Untersuchungen sind.
Die zusammengeführte Protokolldatei sollte wie folgt aussehen:
C. Beispiele für Analysen
Beispiel 1. Die schwersten Zugriffe
Sortieren Sie die zusammengeführte Protokolldatei nach der Antwortzeit in absteigender Reihenfolge, einschließlich der Zugriffe ohne Antwort.
Beispiel 2. Zugriff auf fehlende Antwort
Extrahieren Sie Zugriffe ohne die entsprechenden Antwortdatensätze mithilfe der Platzhalter-Antwortzeit.
Wenn der Zeitpunkt des Zugriffs auf den Server ohne Antwort mit einem Anstieg der Serverauslastung korreliert, können diese Zugriffe Leistungsprobleme ausgelöst haben.
Beispiel 3. Langsame Zugriffe
Extrahieren Sie Zugriffe, die länger als 10 Sekunden dauerten.
Wenn die Anzahl der Treffer zu hoch ist, ersetzen Sie [ 0-9] {5}
durch [ 0-9] {6}
im grep
-Befehl, um den Wert auf Zugriffe einzugrenzen, die länger als 100 Sekunden gedauert haben.
Beispiel 4. Zeitreihendaten der Antwortzeit
Um Diagramme zu erstellen, ist es nützlich, nur den Zeitstempel und die Antwortzeit aus den Daten zu extrahieren.
Das Weglassen von Zugriffen, die sofort geantwortet haben, macht die Daten effizienter. Im folgenden Beispiel wird der Zugriff extrahiert, der länger als eine Sekunde dauerte.
Beispiel 5. Minimum, Mittelwert (Durchschnitt), Median, maximale Antwortzeit
Im obigen Beispiel wird der Befehl datamash (https://www.gnu.org/software/datamash/) für die statistische Verarbeitung verwendet. Wenn das Protokoll Zugriffe ohne Antwort enthält, beeinflusst der Platzhalterwert das Ergebnis.
Beispiel 6. Anzahl der Zugriffe pro Zeitraum
Zählen Sie die Anzahl der Zugriffe pro zehn Minuten. Das Ergebnis hilft bei der Bestimmung, ob großer Traffic ein Leistungsproblem verursacht hat.
Im folgenden Beispiel werden die Daten auf nur POST-Anfragen beschränkt. Ein typischer Anwendungsfall besteht darin, festzustellen, ob es eine Konzentration von Inhaltserstellung oder Replikation auf die Publish-Ebene gibt.
Beispiel 7. Anzahl der Antwortstatus pro Zeitraum
Erstellen Sie mit dem Befehl datamash eine Tabelle mit der Anzahl der einzelnen Antwortstatus pro zehn Minuten.
Beispiel 8. Häufigste URLs
Drucken Sie die drei am häufigsten aufgerufenen URLs pro zehn Minuten.
Beispiel 9. access.log-Einträge für einen request.log-Eintrag
access.log
nach Datensätzen, die einer bestimmten Anfrage-ID entsprechen.
Wenn mehrere Zugriffe auf dieselbe URL gleichzeitig stattgefunden haben, zeigt das Ergebnis mehrere access.log
Datensätze für eine einzelne Anfrage-ID an.
T. Schlussfolgerung
Die Beispiele in diesem Artikel sollen Ihnen bei der Analyse Ihrer Leistungsprobleme helfen.
Die aufgeführten Beispiele wurden auf CentOS 7.5 und Ubuntu 22.04LTS getestet, funktionieren jedoch je nach Umgebung möglicherweise nicht wie erwartet, z. B. verschiedene Versionen oder Varianten der Befehle. Passen Sie sie entsprechend den in Ihrer Umgebung installierten Befehlen an.