Rebuilding Repository for Bachelor thesis
This commit is contained in:
commit
b095814840
117 changed files with 37459 additions and 0 deletions
BIN
Thesis/Folien/images/Classdiagram-Kieker-Perl.pdf
Normal file
BIN
Thesis/Folien/images/Classdiagram-Kieker-Perl.pdf
Normal file
Binary file not shown.
BIN
Thesis/Folien/images/Condensed-Dependency-Graph.pdf
Normal file
BIN
Thesis/Folien/images/Condensed-Dependency-Graph.pdf
Normal file
Binary file not shown.
BIN
Thesis/Folien/images/Dependency-Graph-EPrints.pdf
Normal file
BIN
Thesis/Folien/images/Dependency-Graph-EPrints.pdf
Normal file
Binary file not shown.
BIN
Thesis/Folien/images/Deployment-Diagram-Client-Server-Model.pdf
Normal file
BIN
Thesis/Folien/images/Deployment-Diagram-Client-Server-Model.pdf
Normal file
Binary file not shown.
BIN
Thesis/Folien/images/Instrument-Code.pdf
Normal file
BIN
Thesis/Folien/images/Instrument-Code.pdf
Normal file
Binary file not shown.
BIN
Thesis/Folien/images/Kielprints-Deployment.pdf
Normal file
BIN
Thesis/Folien/images/Kielprints-Deployment.pdf
Normal file
Binary file not shown.
BIN
Thesis/Folien/images/Screenshot-Trace4.png
Normal file
BIN
Thesis/Folien/images/Screenshot-Trace4.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 250 KiB |
BIN
Thesis/Folien/images/kieker-data-bridge.pdf
Normal file
BIN
Thesis/Folien/images/kieker-data-bridge.pdf
Normal file
Binary file not shown.
Binary file not shown.
BIN
Thesis/Folien/images/kielprints.png
Normal file
BIN
Thesis/Folien/images/kielprints.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 735 KiB |
BIN
Thesis/Folien/vortrag.pdf
Normal file
BIN
Thesis/Folien/vortrag.pdf
Normal file
Binary file not shown.
364
Thesis/Folien/vortrag.tex
Normal file
364
Thesis/Folien/vortrag.tex
Normal file
|
@ -0,0 +1,364 @@
|
|||
\documentclass{beamer}
|
||||
|
||||
\mode<presentation>{\usetheme{Madrid}}
|
||||
|
||||
\usepackage[german]{babel}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{times}
|
||||
\usepackage[T1]{fontenc}
|
||||
|
||||
|
||||
\title[Perl-Monitoring] % (optional, nur bei langen Titeln nötig)
|
||||
{Monitoring von Perl-basierten Web Anwendungen mit Kieker}
|
||||
|
||||
\subtitle{Bachelor-\\Abschlusskolloquium}
|
||||
\author{Nis Wechselberg}
|
||||
\institute[CAU Kiel]{Institut für Informatik\\Christian-Albrechts-Universität zu Kiel}
|
||||
|
||||
\date{26. März 2013}
|
||||
|
||||
% Folgendes sollte gelöscht werden, wenn man nicht am Anfang jedes
|
||||
% Unterabschnitts die Gliederung nochmal sehen möchte.
|
||||
\AtBeginSection[]
|
||||
{
|
||||
\begin{frame}<beamer>{Gliederung}
|
||||
\tableofcontents[currentsection,hideothersubsections,hideothersections,sectionstyle=show/hide]
|
||||
\end{frame}
|
||||
}
|
||||
|
||||
|
||||
% Falls Aufzählungen immer schrittweise gezeigt werden sollen, kann
|
||||
% folgendes Kommando benutzt werden:
|
||||
|
||||
% \beamerdefaultoverlayspecification{<+->}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{frame}
|
||||
\titlepage
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Gliederung}
|
||||
\tableofcontents[hidesubsections]
|
||||
% Die Option [pausesections] könnte nützlich sein.
|
||||
\end{frame}
|
||||
|
||||
\section{Motivation}
|
||||
|
||||
\subsection{System}
|
||||
\begin{frame}{Kielprints}
|
||||
\begin{center}
|
||||
\includegraphics[width=0.93\textwidth]{images/kielprints}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
\begin{frame}{Projektbeschreibung}
|
||||
\begin{itemize}
|
||||
\item
|
||||
Plattform zur Veröffentlichung von wissenschaftlichen Dokumenten (\emph{self archiving})
|
||||
\item
|
||||
Ergänzte und modifizierte Version von EPrints
|
||||
\item
|
||||
Betrieben durch das GEOMAR | Helmholtz Zentrum für Ozeanforschung Kiel
|
||||
\item
|
||||
Erweiterung des OceanRep GEOMAR
|
||||
\item
|
||||
Über 15000 Veröffentlichungen von mehr als 1000 Autoren
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\subsection{Beobachtete Performanceprobleme}
|
||||
\begin{frame}{Benutzerperspektive}
|
||||
\begin{itemize}
|
||||
\item
|
||||
Abrufen von Einträgen über die Plattform: \\[0.5cm]
|
||||
\item
|
||||
Erhöhte Antwortzeiten
|
||||
\item
|
||||
Langsame Suche in den Fachbereichen
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
\begin{frame}{Administration/Betrieb}
|
||||
\begin{itemize}
|
||||
\item
|
||||
Hohe Wartezeiten bei Seitenwechseln im Backend
|
||||
\item
|
||||
Beispiel: Beim Eintragen von neuen Publikationen über das Backend und hinzufügen von Autoren dauert die Generierung von Dropdown-Menüs etwa 10 Sekunden.
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\section{Technologien und Methoden}
|
||||
\subsection{Kieker-Framework}
|
||||
\begin{frame}{Kieker Monitoring Framework}
|
||||
\begin{itemize}
|
||||
\item Monitoring Tool aus diesem Lehrstuhl
|
||||
\item Empfohlenes Tool im SPEC RG Software Repository
|
||||
\end{itemize}
|
||||
\includegraphics[scale=0.7]{images/kiekerComponentDiagram-woCloud-bw-w-record-newNames-withTraceAnalysis-colors}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Überblick über Kieker}
|
||||
\begin{itemize}
|
||||
\item Aufteilung in \emph{Kieker.Monitoring} und \emph{Kieker.Analysis}
|
||||
\item \emph{Kieker.Monitoring} zur Instrumentierung und Überwachung
|
||||
\item \emph{Kieker.Analysis} zur Auswertung und Veranschaulichung
|
||||
\item Kommunikation über Monitoring Log oder Stream\\[0.5cm]
|
||||
\item Bisher keine Unterstützung für Perl
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\subsection{Programmiersprache Perl}
|
||||
|
||||
\begin{frame}{Programmiersprache Perl}
|
||||
\begin{itemize}
|
||||
\item imperative, plattformunabhängige, interpretierte Sprache
|
||||
\item Entwickelt 1987, heute in Version 5.16 verfügbar
|
||||
\item Module für Objektorientierung über CPAN verfügbar
|
||||
\item Sehr viele Freiheiten für Programmierer (freie Syntax)
|
||||
\item Starke Funktionen für String-Manipulationen und Reguläre Ausdrücke
|
||||
\item Direkte Integration in Webserver mittels mod\_perl
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\subsection{Performance-Monitoring}
|
||||
|
||||
\begin{frame}{Vorgehen bei Performance-Monitoring}
|
||||
\begin{enumerate}
|
||||
\item Instrumentierung des Codes mit \emph{Probes}
|
||||
\item Ausführung des instrumentierten Codes
|
||||
\item Protokollierung von Monitoring Daten
|
||||
\item Auswertung der Daten mittels geeigneter Tools
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Erfasste Daten}
|
||||
\begin{itemize}
|
||||
\item Anwendungsdaten
|
||||
\begin{itemize}
|
||||
\item Aufrufreihenfolge
|
||||
\item Aufrufhäufigkeiten
|
||||
\item Ausführungszeiten
|
||||
\end{itemize}
|
||||
\item Systemdaten
|
||||
\begin{itemize}
|
||||
\item CPU-Auslastung
|
||||
\item Arbeitsspeicher
|
||||
\item aktive Prozesse
|
||||
\item ...
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\section{Perl.Kieker Implementierung}
|
||||
|
||||
\subsection{Architektur}
|
||||
|
||||
\begin{frame}{Architekturentwurf}
|
||||
\includegraphics[width=0.95\textwidth]{images/Deployment-Diagram-Client-Server-Model}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Neuimplementierungen in Perl}
|
||||
\includegraphics[width=0.95\textwidth]{images/Classdiagram-Kieker-Perl}
|
||||
\begin{itemize}
|
||||
\item Implementierung von Monitoring Records, Monitoring Writer und Kontrollmechanismen
|
||||
\item Unterstützte Records: OperationEntryEvent, OperationExitEvent, Trace
|
||||
\item Auswertung mit \emph{Kieker.Analysis}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\subsection{Basismodule}
|
||||
|
||||
\begin{frame}{Kieker in Perl}
|
||||
\begin{itemize}
|
||||
\item Kieker
|
||||
\begin{itemize}
|
||||
\item Kapselt die weiteren Module zur einfacheren Verwendung
|
||||
\item Hält die Instanzen von Kieker::Writer und Kieker::Controlling
|
||||
\end{itemize}
|
||||
\item Kieker::Controlling
|
||||
\begin{itemize}
|
||||
\item Verwaltet Trace-IDs und Order-Indices
|
||||
\item Erzeugt bei Bedarf neue Traces
|
||||
\end{itemize}
|
||||
\item Kieker::Util
|
||||
\begin{itemize}
|
||||
\item Verwaltet Zeitmessung
|
||||
\item Rechnet Perl-Mikrosekunden in Nanosekunden um
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Kieker in Perl - Writer}
|
||||
\begin{itemize}
|
||||
\item Kieker::Writer::FileWriter
|
||||
\begin{itemize}
|
||||
\item Schreibt serialisierte Records in angelegte Datei
|
||||
\item Wurde für frühe Test verwendet
|
||||
\end{itemize}
|
||||
\item Kieker::Writer::JMSWriter
|
||||
\begin{itemize}
|
||||
\item Verwendet den Java Message Service zur Übertragung der Nachrichten
|
||||
\item Anbindung an Kieker mittels Kieker-Data-Bridge
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Kieker in Perl - Records}
|
||||
\begin{itemize}
|
||||
\item Kieker::Record::Trace
|
||||
\item Kieker::Record::OperationEntryEvent // OperationExitEvent
|
||||
\begin{itemize}
|
||||
\item Zeigen Start und Ende einer Funktion an
|
||||
\item Benötigte Daten: Funktionsname, Paketname, Zeitstempel, Trace, OrderIndex
|
||||
\item Rekonstruktion durch Kieker.Analysis
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\subsection{Kieker-Data-Bridge}
|
||||
\begin{frame}{Kieker-Data-Bridge I}
|
||||
\includegraphics[width=0.95\textwidth]{images/kieker-data-bridge}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Kieker-Data-Bridge II}
|
||||
\begin{itemize}
|
||||
\item Entwickelt aus dem MENGES-Projekt heraus
|
||||
\item Stellt eine einheitliche Schnittstelle für neue Erweiterungen dar
|
||||
\item Verschiedene Konnektoren \\
|
||||
(TCP Client, TCP Server, JMS Client, JMS Embedded)
|
||||
\item Empfängt Binärdaten und Textnachrichten
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Kieker-Data-Bridge III}
|
||||
\begin{itemize}
|
||||
\item Textnachrichten mit Semikolon getrennt
|
||||
\item Records werden mit Mapping-Datei identifiziert
|
||||
\item Parameter hängen von Record-Typ ab
|
||||
\item Beispiel: \texttt{1;1362747533540734000;6889; \\5;EPrints.current\_repository;EPrints}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\section{Instrumentierung}
|
||||
|
||||
\begin{frame}{Automatische Instrumentierung}
|
||||
\begin{itemize}
|
||||
\item Verwendung von CPAN-Modul Sub::WrapPackages
|
||||
\item Automatische Erstellung von Wrappern
|
||||
\item[] \includegraphics[width=0.7\textwidth]{images/Instrument-Code}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\section{Testdurchführung}
|
||||
\subsection{System}
|
||||
\begin{frame}{Vergleichstest}
|
||||
\begin{itemize}
|
||||
\item Virtuelle Maschine unter Ubuntu 12.04 LTS
|
||||
\item Datenbasis vom GEOMAR vom 7. Februar 2013
|
||||
\item Vergleich von EPrints 3.2 und Kielprints
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Komponenten}
|
||||
\begin{center}
|
||||
\includegraphics[width=0.7\textwidth]{images/Kielprints-Deployment}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
\subsection{Requests}
|
||||
\begin{frame}
|
||||
\begin{itemize}
|
||||
\item 5 beispielhafte Anfragen auf der Admin-Oberfläche
|
||||
\item Anwendungsfall \emph{Neue Publikation eintragen} (Skizze)
|
||||
\item 4 normale Requests, 1 AJAX Request
|
||||
\item[] \includegraphics[width=0.7\textwidth]{images/Screenshot-Trace4}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\section{Ergebnisse}
|
||||
\subsection{Zeitliches Verhalten}
|
||||
\begin{frame}[shrink=15]{Zeitmessungen}
|
||||
\begin{table}
|
||||
\begin{tabular}{l|rrrrr}
|
||||
Request & 1 & 2 & 3 & 4 & 5 \\
|
||||
\hline
|
||||
EP norm. & 402 ms & 220 ms & 136 ms & 413 ms & 348 ms \\
|
||||
EP inst. & 15389 ms & 15043 ms & 18408 ms & \textbf{23430 ms} & \textbf{7066 ms} \\
|
||||
\hline
|
||||
KP norm. & 10270 ms & 227 ms & 166 ms & 13420 ms & 18890 ms \\
|
||||
KP inst. & 28505 ms & 16623 ms & 17414 ms & \textbf{280927 ms} & \textbf{342662 ms} \\
|
||||
\hline
|
||||
F1 & 25,5 & 1,0 & 1,2 & 32,5 & 54,3 \\
|
||||
F2 & 1,8 & 1,1 & 0,9 & 11,9 & 48,5
|
||||
\end{tabular}
|
||||
\caption{Zeitliches Verhalten von Eprints und Kielprints vor und nach Instrumentierung}
|
||||
\end{table}
|
||||
\textbf{Requests}
|
||||
\begin{enumerate}
|
||||
\item Admin Homepage
|
||||
\item Neue Publikation eintragen
|
||||
\item Dateiupload
|
||||
\item Metadaten
|
||||
\item AJAX: Mehr Autorenfelder
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
\subsection{Funktionsaufrufe}
|
||||
\begin{frame}[shrink=15]{Funktionsaufrufe}
|
||||
\begin{table}[h!tb]
|
||||
\begin{tabular}{l|rrrrr|r}
|
||||
Request & 1 & 2 & 3 & 4 & 5 & Summe \\
|
||||
\hline
|
||||
Eprints & 20875 & 28590 & 33171 & 43056 & 16980 & 142672 \\
|
||||
% \hline
|
||||
Kielprints & 31742 & 36681 & 40165 & 905580 & 934760 & 1948928 \\
|
||||
% \hline
|
||||
Faktor & 1,5 & 1,3 & 1,2 & 21,0 & 55,1 & 13,7
|
||||
\end{tabular}
|
||||
\caption{Funktionsaufrufe von EPrints und Kielprints}
|
||||
\end{table}
|
||||
\end{frame}
|
||||
\subsection{Aktive Pakete}
|
||||
\begin{frame}[shrink=10]{Aktive Pakete}
|
||||
\begin{table}[h!tb]
|
||||
\begin{tabular}{lrlr}
|
||||
\textbf{EPrints} & \textbf{Aufrufe} & \textbf{Kielprints} & \textbf{Aufrufe} \\
|
||||
EPrints.Script.Compiler & 30304 & EPrints.MetaField & 501872 \\
|
||||
EPrints.Repository & 25980 & EPrints.DataSet & 253493 \\
|
||||
EPrints.MetaField & 18374 & EPrints.Repository & 243699 \\
|
||||
EPrints.XML & 12486 & EPrints.Database & 189624 \\
|
||||
EPrints.DataSet & 7488 & EPrints.DataObj & 156391 \\
|
||||
EPrints.Utils & 7220 & EPrints.MetaField.Id & 155978 \\
|
||||
EPrints.XML.EPC & 5703 & EPrints.Utils & 118036 \\
|
||||
EPrints.DataObj & 5439 & EPrints.XML & 107939 \\
|
||||
EPrints.Database & 3466 & EPrints.MetaField.Multilang & 45312 \\
|
||||
EPrints.Script.Compiled & 3404 & EPrints.Script.Compiler & 39550
|
||||
\end{tabular}
|
||||
\caption{Die 10 aktivsten Pakete}
|
||||
\end{table}
|
||||
\end{frame}
|
||||
\subsection{Abhängigkeiten}
|
||||
\begin{frame}{Abhängigkeitsgraph EPrints}
|
||||
\begin{center}
|
||||
\includegraphics[width=0.6\textwidth]{images/Dependency-Graph-EPrints}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Reduzierter Abhängigkeitsgraph}
|
||||
\begin{center}
|
||||
\includegraphics[width=0.65\textwidth]{images/Condensed-Dependency-Graph}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\section{Fazit}
|
||||
|
||||
\begin{frame}{Fazit}
|
||||
\begin{itemize}
|
||||
\item Es wurde ein erstes Monitoringverfahren für Perl-Anwendungen etabliert.
|
||||
\item Die Perl-Data-Bridge wurde das erste Mal \emph{produktiv} eingesetzt.
|
||||
\item Es wurde ein Vergleichstest von EPrints und Kielprints durchgeführt.
|
||||
\item Es wurden häufige Datenbankanfragen in Kielprints festgestellt.
|
||||
\item Es wurden Schwächen in der Architektur sowohl von EPrints und Kielprints erkannt.
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\end{document}
|
Loading…
Add table
Add a link
Reference in a new issue