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 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 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. 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 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. 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} \documentclass[aspectratio=169]{beamer}
\graphicspath{ {./gfx/} }
\input{beamer-config} \input{beamer-config}
\usetheme{cleangreen} \usetheme{cleangreen}
\include{marco-galster-config} \input{marco-galster-config}
\addbibresource{expose-ref.bib} \addbibresource{expose-ref.bib}
% ACHTUNG: Damit sich die Datei sauber im Visual Studio Code übersetzten lässt, muss in den Benutzer-Einstellungen % 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} \addtocounter{framenumber}{-1}
\end{frame} \end{frame}
\def\showHorizontalNavBar{True}
% -- SLIDES -- % -- SLIDES --
\section{Aufbau} \section{Übersicht}
\begin{frame} \begin{frame}[c]
\frametitle{Schichten} \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{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}, 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]}}, lineArrow/.style={arrows={-Latex[length=5pt 3 0]}},
every fit/.style={inner sep=.4em,draw} every fit/.style={inner sep=.4em,draw}
] ]
%https://docs.oracle.com/javaee/6/tutorial/doc/bnacj.html
\node (browser) [block] {WebBrowser}; \node (browser) [block] {WebBrowser};
\node (fitClient) [rounded corners,fit=(browser)] {}; \node (fitClient) [rounded corners,fit=(browser)] {};
\node [left] at (fitClient.west) {Client}; \node [left] at (fitClient.west) {Client};
@ -83,26 +99,40 @@
\draw[lineArrow] (memoryBuffers)--(database); \draw[lineArrow] (memoryBuffers)--(database);
\draw[lineArrow] (services)|-(database); \draw[lineArrow] (services)|-(database);
\end{tikzpicture} \end{tikzpicture}
%\caption{Ablauf einer Web-Anfrage}
\label{fig:webrequest} \label{fig:webrequest}
\end{figure} \end{figure}
\end{frame} \end{frame}
\section{Untersuchungen} \section{Untersuchungen}
\begin{frame} \begin{frame}[c]
\frametitle{Allgemein} \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} \begin{itemize}
\item Verwendung von Docker, zur Performance-Limitierung \item Verwendung von Docker, zur Performance-Limitierung
\item Eigene Container für die Datenbank und den Webserver \item Eigene Container für die Datenbank und den Webserver
\item Für die Untersuchung wird nur die Dokumentenliste beobachtet \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 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{itemize}
\end{frame} \end{frame}
\subsection{Ohne Cache} %\subsection{Ohne Cache}
\begin{frame} \begin{frame}[c]
\frametitle{Ohne Cache} \frametitle{Ohne Cache}
\begin{columns} \begin{columns}
\onslide<2->{ \onslide<2->{
@ -139,8 +169,8 @@
% Hier 2-3 der aktuellen erarbeiten Ansätze Vorstellen und nach dem Warum fragen % Hier 2-3 der aktuellen erarbeiten Ansätze Vorstellen und nach dem Warum fragen
% Genau beschreiben was Signifikant besser/schlechter ist % Genau beschreiben was Signifikant besser/schlechter ist
\subsection{OpenJPA-Cache} %\subsection{OpenJPA-Cache}
\begin{frame} \begin{frame}[c]
\frametitle{Caching mit OpenJPA} \frametitle{Caching mit OpenJPA}
\begin{columns} \begin{columns}
\onslide<2->{ \onslide<2->{
@ -180,13 +210,12 @@
\end{tabular} } \end{tabular} }
\caption{Messung mit OpenJPA-Cache und Größe auf 1000 bzw. 10000} \caption{Messung mit OpenJPA-Cache und Größe auf 1000 bzw. 10000}
\end{table} \end{table}
} }
\end{columns} \end{columns}
\end{frame} \end{frame}
\subsection{Materialized View} %\subsection{Materialized View}
\begin{frame} \begin{frame}[c]
\frametitle{Abfragen über materialized views} \frametitle{Abfragen über materialized views}
\begin{columns} \begin{columns}
\onslide<2->{ \onslide<2->{
@ -225,7 +254,7 @@
\end{frame} \end{frame}
\section{Vergleich} \section{Vergleich}
\begin{frame} \begin{frame}[c]
\frametitle{Vergleich} \frametitle{Vergleich}
\begin{columns} \begin{columns}
\column{0.3\textwidth} \column{0.3\textwidth}
@ -246,13 +275,9 @@
grid style=dashed, grid style=dashed,
] ]
\addplot coordinates { (0,2079)(1,623)(2,372)(3,428)(4,357)(5,404) }; \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,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,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)}; \addplot coordinates { (0,808) (1,315)(2,172)(3,151)(4,143)(5,125)};
\legend{Ohne Cache,OpenJPA Cache,OpenJPA Cache groß,Materialized View} \legend{Ohne Cache,OpenJPA Cache,OpenJPA Cache groß,Materialized View}
\end{axis} \end{axis}
\end{tikzpicture} \end{tikzpicture}
@ -272,35 +297,39 @@
grid style=dashed, grid style=dashed,
] ]
\addplot coordinates { (1,30.3)(2,31.5)(3,33.5)(4,33.7)(5,32.9) }; \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,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,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) }; \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} \legend{Ohne Cache,OpenJPA Cache,OpenJPA Cache groß,Materialized View}
\end{axis} \end{axis}
\end{tikzpicture} \end{tikzpicture}
\pause \pause
\column{0.7\textwidth} \column{0.7\textwidth}
\begin{itemize} \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 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} \end{itemize}
\pause
\begin{block}{Zusammenfassung}
Dies zeigt, die größten Optimierspotenziale sind in der Anwendung versteckt
\end{block}
\end{columns} \end{columns}
\end{frame} \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 % -- SLIDE -- REFERENCES
% hier alle Keys aus der BIB einfügen, die mit dargestellt werden sollen % hier alle Keys aus der BIB einfügen, die mit dargestellt werden sollen
\nocite{IbmOpenJPACaching2023,PostgresPro:Chap20.4:2023} \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] \begin{frame}[t]
\frametitle{Referenzen} \frametitle{Referenzen}
\printbibliography[title=Referenzen] \printbibliography[title=Referenzen]

Binary file not shown.