\epigraph{\textit{Throughout human history, we have been dependent on machines to survive. Fate, it seems, is not without a sense of irony.}}{--- Morpheus, \textit{The Matrix}}

\noindent Seit einigen Jahren nehmen Internetdienste eine immer wichtigere Position ein. Mit fortschreitender Zeit wachsen diese Dienste und müssen häufig mit wachsender Komplexität fertig werden. Hier müssen zum Beispiel steigende Benutzerzahlen, wachsende Datenbanken oder Ergänzungen neuer Funktionen berücksichtigt werden. Kann die Anwendung nicht mir diesen Herausforderungen umgehen, treten häufig Performanceprobleme auf und es besteht schnell Bedarf an einer Möglichkeit das Verhalten der Anwendung zur Laufzeit zu beobachten und zu analysieren.

Das \gls{kieker} Monitoring Framework wird seit einiger Zeit an der Universität Kiel entwickelt und stellt ein mächtiges System zur Überwachung und Analyse von diversen Softwaresystemen dar. Dieses Programm ist in Java programmiert und unterstützt zur Zeit, mit Java, .NET, VB6 und COBOL, nur eine eingeschränkte Anzahl von Programmiersprachen. Mit diesem Tool sollte nun versucht werden in der Publikationsdatenbank \gls{kielpr} der Universität Performance-Probleme, die im Betrieb aufgetreten sind, zu lokalisieren. Diese Anwendung besteht aus einer modifizierte Version der quelloffenen Software EPrints der University of Southampton, welche am GEOMAR | Helmholtz-Zentrum für Ozeanforschung Kiel angepasst wurde und von dem dortigen Datenmanagement-Team betrieben wird. Große Teile der Anwendung wurden in der Programmiersprache Perl geschrieben, für die zum Zeitpunkt der Arbeit noch keine Schnittstelle im \gls{kieker} Framework vorhanden war. Somit wurde es nötig diese Schnittstelle zu realisieren um anschließend das \gls{kielpr}-System untersuchen zu können.

Im Rahmen der Arbeit werden die benötigten Perl-Module für das \gls{moni} sowie eine Anbindung dieser Komponenten an das bestehende \gls{kieker} Framework realisiert. Hierfür wird neben den Messmethoden in Perl auch eine Brücke in die Java-Anwendung \gls{kieker} benötigt. Anschließend werden diese neuen Komponenten auf das \gls{kielpr}-System angewendet, also eine Instrumentierung der Anwendung durchgeführt. Mit diesem instrumentierten \gls{kielpr} werden dann Tests durchgeführt, um Ursachen für die Performance-Probleme aufzudecken.

\noindent Im folgenden erkläre ich in \autoref{cha:grundlagen} die benötigten Grundlagen und stelle die verwendeten Technologien vor. Hierauf aufbauend stelle ich dann in \autoref{cha:perl} die von mir realisierten Softwarekomponenten vor und beschreibe anschließend die Anwendung auf das beschriebene Problem in \autoref{cha:instrumentierung}. In \autoref{cha:tests} wird dann das Testverfahren präsentiert und die erhaltenen Ergebnisse in \autoref{cha:testsErgebnisse} angegeben und analysiert. Zum Abschluss werde ich in \autoref{cha:abschluss} noch eine Zusammenfassung und mögliche Weiterführungen der Arbeit präsentieren.
