Daily CheckIn
This commit is contained in:
parent
adb7dc7122
commit
23e767a6c9
5 changed files with 110 additions and 80 deletions
|
@ -22,6 +22,7 @@ Konfigurationsänderung im Payara-Server von \texttt{-Xmx512m} auf \texttt{-Xmx4
|
|||
ca. 60 Aufrufe des Scripts benötigt, damit der Server nicht mehr reagiert. Hierbei wird aber kein OutOfMemoryError
|
||||
in der Log-Datei protokolliert und der Server verwendet nun ca. 4700 MB RSS. Bei allen Tests war noch mehr als die
|
||||
Hälfte des verfügbaren Arbeitsspeichers unbenutzt.
|
||||
\mytodos{-Xmx definiert die Größe des Verwendbaren Heapspeichers}
|
||||
|
||||
Dies zeigt direkt, dass es ein problem in der Freigabe der Objekte gibt, da dass erhöhen des verwendbaren Arbeitsspeicher
|
||||
das Problem nicht löst, sondern nur verschiebt.
|
||||
|
|
BIN
gfx/Webseite_FrankWedekind.png
Normal file
BIN
gfx/Webseite_FrankWedekind.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 262 KiB |
Binary file not shown.
|
@ -1,8 +1,9 @@
|
|||
\documentclass[aspectratio=169]{beamer}
|
||||
\graphicspath{ {./gfx/} }
|
||||
\input{beamer-config}
|
||||
\usetheme{cleangreen}
|
||||
|
||||
\include{marco-galster-config}
|
||||
\input{marco-galster-config}
|
||||
\addbibresource{expose-ref.bib}
|
||||
|
||||
% ACHTUNG: Damit sich die Datei sauber im Visual Studio Code übersetzten lässt, muss in den Benutzer-Einstellungen
|
||||
|
@ -42,19 +43,34 @@
|
|||
\addtocounter{framenumber}{-1}
|
||||
|
||||
\end{frame}
|
||||
\def\showHorizontalNavBar{True}
|
||||
|
||||
% -- SLIDES --
|
||||
\section{Aufbau}
|
||||
\begin{frame}
|
||||
\frametitle{Schichten}
|
||||
\section{Übersicht}
|
||||
\begin{frame}[c]
|
||||
\frametitle{Problemstellung}
|
||||
\begin{columns}
|
||||
\column{.5\textwidth}
|
||||
\centering
|
||||
\includegraphics[width=0.9\textwidth]{Webseite_FrankWedekind}
|
||||
|
||||
\column{.5\textwidth}
|
||||
\begin{itemize}
|
||||
\item Eine webbasierte Anwendung der Frank Wedekind Briefedition
|
||||
\item Performance Problem bei der Abfrage der Briefe sowie der Recherchen der Korrespondenzen
|
||||
\item entsprechend geringere Akzeptanz der Anwendung
|
||||
\end{itemize}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[c]
|
||||
\frametitle{Ablauf einer Web-Anfrage}
|
||||
\begin{figure}[centered]
|
||||
\begin{tikzpicture}[scale=.6,transform shape,node distance=4em,
|
||||
\begin{tikzpicture}[scale=.55,transform shape,node distance=4em,
|
||||
block/.style={rectangle, rounded corners,minimum width=3cm,minimum height=.5cm,text centered, draw=black,fill=green!30},
|
||||
lineArrow/.style={arrows={-Latex[length=5pt 3 0]}},
|
||||
every fit/.style={inner sep=.4em,draw}
|
||||
]
|
||||
%https://docs.oracle.com/javaee/6/tutorial/doc/bnacj.html
|
||||
\node (browser) [block] {WebBrowser};
|
||||
\node (fitClient) [rounded corners,fit=(browser)] {};
|
||||
\node [left] at (fitClient.west) {Client};
|
||||
|
@ -83,26 +99,40 @@
|
|||
\draw[lineArrow] (memoryBuffers)--(database);
|
||||
\draw[lineArrow] (services)|-(database);
|
||||
\end{tikzpicture}
|
||||
%\caption{Ablauf einer Web-Anfrage}
|
||||
\label{fig:webrequest}
|
||||
\end{figure}
|
||||
|
||||
\end{frame}
|
||||
|
||||
\section{Untersuchungen}
|
||||
\begin{frame}
|
||||
\frametitle{Allgemein}
|
||||
\begin{frame}[c]
|
||||
\frametitle{Vorgehen}
|
||||
\begin{itemize}
|
||||
\item Vor jeder Messung werden die Container neugestartet und die Startroutinen abgewartet
|
||||
\item Aufruf eines Bash-Script auf dem gleichen Rechner wie die Docker-Container um die Latenz des Netzwerkes auszuschließen
|
||||
\item Ermittlung des Speicherbedarfs vor und nach dem Webseitenaufrufen
|
||||
\item Messung der Aufruf der Index-Seite (ohne Datenbankaufrufe) und der Dokumentenliste, jeweils 10 mal
|
||||
\item Report über die SQL-Abfragen mit pgBadger erstellen
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[c]
|
||||
\frametitle{Voraussetzungen}
|
||||
\begin{itemize}
|
||||
\item Verwendung von Docker, zur Performance-Limitierung
|
||||
\item Eigene Container für die Datenbank und den Webserver
|
||||
\item Für die Untersuchung wird nur die Dokumentenliste beobachtet
|
||||
\end{itemize}
|
||||
|
||||
\vspace{10pt}
|
||||
Erste Auffälligkeiten
|
||||
\begin{itemize}
|
||||
\item OutOfMemory-Ausnahme ausgelöst nach dem vierten Script Aufruf ($\sim$40 Webseitenaufrufe)
|
||||
\item Vor jeder Messung werden die Container neugestartet und die Startroutinen abgewartet
|
||||
\item Erhöhung des Java-Heapspeichers von 512MB auf 4096MB hat nur die Anzahl der Aufrufe bis zum Absturz verzögert
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\subsection{Ohne Cache}
|
||||
\begin{frame}
|
||||
%\subsection{Ohne Cache}
|
||||
\begin{frame}[c]
|
||||
\frametitle{Ohne Cache}
|
||||
\begin{columns}
|
||||
\onslide<2->{
|
||||
|
@ -139,8 +169,8 @@
|
|||
% Hier 2-3 der aktuellen erarbeiten Ansätze Vorstellen und nach dem Warum fragen
|
||||
% Genau beschreiben was Signifikant besser/schlechter ist
|
||||
|
||||
\subsection{OpenJPA-Cache}
|
||||
\begin{frame}
|
||||
%\subsection{OpenJPA-Cache}
|
||||
\begin{frame}[c]
|
||||
\frametitle{Caching mit OpenJPA}
|
||||
\begin{columns}
|
||||
\onslide<2->{
|
||||
|
@ -180,13 +210,12 @@
|
|||
\end{tabular} }
|
||||
\caption{Messung mit OpenJPA-Cache und Größe auf 1000 bzw. 10000}
|
||||
\end{table}
|
||||
|
||||
}
|
||||
\end{columns}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\subsection{Materialized View}
|
||||
\begin{frame}
|
||||
%\subsection{Materialized View}
|
||||
\begin{frame}[c]
|
||||
\frametitle{Abfragen über materialized views}
|
||||
\begin{columns}
|
||||
\onslide<2->{
|
||||
|
@ -221,86 +250,86 @@
|
|||
\caption{Messung mit Materialized View}
|
||||
\end{table}
|
||||
}
|
||||
\end{columns}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\section{Vergleich}
|
||||
\begin{frame}
|
||||
\begin{frame}[c]
|
||||
\frametitle{Vergleich}
|
||||
\begin{columns}
|
||||
\column{0.3\textwidth}
|
||||
\centering
|
||||
\begin{tikzpicture}[scale=.4]
|
||||
\centering
|
||||
\begin{axis}[
|
||||
title={Laufzeitvergleich Webseitenaufrufe},
|
||||
%width=\textwidth,height=\textheight,
|
||||
xlabel={Aufruf},
|
||||
ylabel={Laufzeit [ms]},
|
||||
enlargelimits=0.05,
|
||||
ymin=0, ymax=2100,
|
||||
xtick={0,1,2,3,4,5}, %Ticks explizit angeben, dass bei grpßerer Darstellung nicht Zwischenticks existieren
|
||||
ytick={0,500,1000,1500,2000,2500},
|
||||
legend pos=north east,
|
||||
ymajorgrids=true,
|
||||
grid style=dashed,
|
||||
]
|
||||
\addplot coordinates { (0,2079)(1,623)(2,372)(3,428)(4,357)(5,404) };
|
||||
|
||||
\addplot coordinates { (0,1853) (1,567)(2,290)(3,254)(4,289)(5,265)};
|
||||
|
||||
\addplot coordinates { (0,1904) (1,143)(2,126)(3,126)(4,124)(5,114)};
|
||||
|
||||
\addplot coordinates { (0,808) (1,315)(2,172)(3,151)(4,143)(5,125)};
|
||||
|
||||
\legend{Ohne Cache,OpenJPA Cache,OpenJPA Cache groß,Materialized View}
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
\begin{tikzpicture}[scale=.4]
|
||||
\centering
|
||||
\begin{axis}[
|
||||
title={Laufzeitvergleich Webseitenaufrufe},
|
||||
%width=\textwidth,height=\textheight,
|
||||
xlabel={Aufruf},
|
||||
ylabel={Laufzeit [ms]},
|
||||
enlargelimits=0.05,
|
||||
ymin=0, ymax=2100,
|
||||
xtick={0,1,2,3,4,5}, %Ticks explizit angeben, dass bei grpßerer Darstellung nicht Zwischenticks existieren
|
||||
ytick={0,500,1000,1500,2000,2500},
|
||||
legend pos=north east,
|
||||
ymajorgrids=true,
|
||||
grid style=dashed,
|
||||
]
|
||||
\addplot coordinates { (0,2079)(1,623)(2,372)(3,428)(4,357)(5,404) };
|
||||
\addplot coordinates { (0,1853) (1,567)(2,290)(3,254)(4,289)(5,265)};
|
||||
\addplot coordinates { (0,1904) (1,143)(2,126)(3,126)(4,124)(5,114)};
|
||||
\addplot coordinates { (0,808) (1,315)(2,172)(3,151)(4,143)(5,125)};
|
||||
\legend{Ohne Cache,OpenJPA Cache,OpenJPA Cache groß,Materialized View}
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
|
||||
\begin{tikzpicture}[scale=.4]
|
||||
\centering
|
||||
\begin{axis}[
|
||||
title={Laufzeitvergleich Datenbankabfragen},
|
||||
%width=\textwidth,height=\textheight,
|
||||
xlabel={Aufruf},
|
||||
ylabel={Laufzeit [ms]},
|
||||
enlargelimits=0.05,
|
||||
ymin=0, ymax=60,
|
||||
xtick={1,2,3,4,5}, %Ticks explizit angeben, dass bei grpßerer Darstellung nicht Zwischenticks existieren
|
||||
legend pos=north east,
|
||||
ymajorgrids=true,
|
||||
grid style=dashed,
|
||||
]
|
||||
\addplot coordinates { (1,30.3)(2,31.5)(3,33.5)(4,33.7)(5,32.9) };
|
||||
|
||||
\addplot coordinates { (1,28.8)(2,25.8)(3,27.6)(4,27.6)(5,27.6) };
|
||||
|
||||
\addplot coordinates { (1,20.8)(2,20.5)(3,19.9)(4,21.4)(5,19.7) };
|
||||
|
||||
\addplot coordinates { (1,3.0)(2,2.2)(3,2.8)(4,2.8)(5,2.4) };
|
||||
|
||||
\legend{Ohne Cache,OpenJPA Cache,OpenJPA Cache groß,Materialized View}
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
\begin{tikzpicture}[scale=.4]
|
||||
\centering
|
||||
\begin{axis}[
|
||||
title={Laufzeitvergleich Datenbankabfragen},
|
||||
%width=\textwidth,height=\textheight,
|
||||
xlabel={Aufruf},
|
||||
ylabel={Laufzeit [ms]},
|
||||
enlargelimits=0.05,
|
||||
ymin=0, ymax=60,
|
||||
xtick={1,2,3,4,5}, %Ticks explizit angeben, dass bei grpßerer Darstellung nicht Zwischenticks existieren
|
||||
legend pos=north east,
|
||||
ymajorgrids=true,
|
||||
grid style=dashed,
|
||||
]
|
||||
\addplot coordinates { (1,30.3)(2,31.5)(3,33.5)(4,33.7)(5,32.9) };
|
||||
\addplot coordinates { (1,28.8)(2,25.8)(3,27.6)(4,27.6)(5,27.6) };
|
||||
\addplot coordinates { (1,20.8)(2,20.5)(3,19.9)(4,21.4)(5,19.7) };
|
||||
\addplot coordinates { (1,3.0)(2,2.2)(3,2.8)(4,2.8)(5,2.4) };
|
||||
\legend{Ohne Cache,OpenJPA Cache,OpenJPA Cache groß,Materialized View}
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
|
||||
\pause
|
||||
|
||||
\pause
|
||||
\column{0.7\textwidth}
|
||||
\begin{itemize}
|
||||
\item Keine Start-Phase auf der Datenbank zu erkennen
|
||||
\item Keine Start-Phase auf der Datenbank zu erkennen, im Gegensatz zur Anwendung
|
||||
\item Die Datenbankabfragen nehmen den kleinsten Teil der Laufzeit ein
|
||||
\item Materialized View geringste Datenbankabfragezeiten, aber nicht schneller als großen OpenJPA-Cache
|
||||
\item Materialized View geringste Datenbankabfragezeiten, aber nicht schneller als OpenJPA-Cache mit größerem Cache
|
||||
\end{itemize}
|
||||
\pause
|
||||
\begin{block}{Zusammenfassung}
|
||||
Dies zeigt, die größten Optimierspotenziale sind in der Anwendung versteckt
|
||||
\end{block}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Ausblick}
|
||||
|
||||
\begin{itemize}
|
||||
\item Größte Optimierungspotenziale sind in der Anwendung vorhanden
|
||||
\item Ermittlung welcher Teil der Anwendung die meiste Zeit benötigt
|
||||
\item Weitere Prüfung der anderen Caches
|
||||
\item Suche des Speicherlecks
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
% -- SLIDE -- REFERENCES
|
||||
% hier alle Keys aus der BIB einfügen, die mit dargestellt werden sollen
|
||||
\nocite{IbmOpenJPACaching2023,PostgresPro:Chap20.4:2023}
|
||||
% Für mehreren Seite bei den Referenzen ein ",allowframebreaks" in den [] hinzufügen
|
||||
%% Für mehreren Seite bei den Referenzen ein ",allowframebreaks" in den [] hinzufügen
|
||||
\begin{frame}[t]
|
||||
\frametitle{Referenzen}
|
||||
\printbibliography[title=Referenzen]
|
||||
|
|
BIN
thesis.pdf
BIN
thesis.pdf
Binary file not shown.
Loading…
Reference in a new issue