Daily CheckIn

This commit is contained in:
marcodn 2024-08-22 23:47:35 +02:00
parent adb7dc7122
commit 23e767a6c9
5 changed files with 110 additions and 80 deletions

View file

@ -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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

View file

@ -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]

Binary file not shown.