Springe zum Inhalt

Sancho Fock

Last- und Performancetest Experte

  • Startseite
  • CV
  • Cryptonomicon
  • Kontakt

Performance Test eines phpBB Internet Forums

März 31, 2018
Von Sancho Fock In Performance

Performance Test eines phpBB Internet Forums

Ich habe dies anlässlich eines Performanceproblems eines nicht kommerziellen aber rege genutzten Internetforums getan und will hier kurz zeigen, was nötig war bzw.  wie ich die wichtigsten Informationen gewonnen habe.

In dem zu untersuchenden Fall kam es beim Speichern von Beiträgen teilweise zu erheblich langsamen Antwortzeiten. Verwendet wird die phpBB Board Software, welche eine mySQL Datenbank nutzt.

Ich möchte hier das Vorgehen von der Analyse bis zur Lösung darstellen. Dafür habe ich das Thema in mehrere Artikel aufgeteilt um den Teilbereichen etwas mehr Details darstellen zu können.

Da das Problem (teilweise sehr lange Antwortzeiten) nur sporadisch auftrat war der erste Schritt das Problem messbar und reproduzierbar zu machen.

Hierfür habe ich ein Loadrunner Script mit der Comunity Version des Loadrunners erstellt  und einen kleinen Lasttest ausgeführt.

In dem betroffenen Board habe ich also einen Performancetest User angelegt und einen nicht öffentlichen Thread erstellt, in dem dieser Beiträge erstellen konnte ohne andere Benutzer zu stören.

Das Scripting mit Loadrunner war nicht besonders schwierig, enthielt jedoch einen interessanten Fallstrick, dem ich einen eigenen kleinen Artikel (http://www.sanchofock.de/?p=65) widme.

Als Szenario habe ich mich für einen einfachen Performancetest mit einem virtuellen User entschieden, der für 15 Minuten jeweils einen Artikel nach dem anderen postet.

Das Ergebnis bestätigte zuerst mal, dass die langsamen Antwortzeiten keine Einbildung und auch kein Zufall waren. Besonders auffällig war jedoch, dass die Antwortzeiten zum einen sehr unterschiedlich waren, die schnellsten waren kleiner als eine Sekunde, die Langsamsten ca. 12 Sekunden manchmal sogar 15 Sekunden. Allerdings war die Verteilung nicht gleichmässig, sondern es gab Gruppen mit ca 0,x 3,x 6,x 9,x 12,x und 15,x Sekunden jedoch nichts dazwischen. Die Percentile Darstellung zeigt das recht deutlich:

Dieses seltsame Bild deutete darauf hin, dass es irgendwo in dem Prozess -hin und wieder- zu Timeouts kommt, aber wo?

Als erstes habe ich mir die Datenbank angesehen. Dies beschreibe ich ausführlich in dem Artikel http://www.sanchofock.de/?p=56

Das Ergebnis war jedoch, dass die Ursache nicht in der Datenbank selbst lag.

Deshalb habe ich die Gelegenheit genutzt mit Hilfe einer DynaTrace Teststellung dieses Tool in Verbindung mit PHP zu testen. Auch hierzu habe ich einen ausführlichen Artikel geschrieben (http://www.sanchofock.de/?p=39)

Und siehe da mit Hilfe von Dyna Trace habe ich den entscheidenden Hinweis bekommen. Keiner der Service Aufrufe selbst war langsam, aber die häufig verwendete Methode getHostByName verbrauchte insgesamt viel Zeit. Diese Methode ist dafür Zuständig die IP Adresse für einen HostNamen zu ermitteln bzw. eine DNS Abfrage zu machen.

Ein manueller Check an der Konsole des Servers bestätigte den Verdacht: Ich führte mehrere nslookup Anfragen auf den eigen Host Namen aus und die meisten waren blitzschnell beantwortet, so wie es sein sollte, aber einige dauerten mehre Sekunden.

Ein Blick in die resolv.c Datei verriet, dass das Timeout für DNS anfragen auf genau 3 Sekunden eingestellt war. Treffer!

Ich verringerte nun das Timeout und wiederholte den Test und siehe da die Gruppen, die zuvor je 3 Sekunden auseinander lagen lagen nun nur noch 1 Sekunde auseinander. Die maximalen Antwortzeiten waren nun auch entsprechend geringer.

Als nächstes habe ich die bisher verwendeten DNS Server des eigenen Providers durch eine Liste frei verfügbarer DNS Server ersetzt und die Anzahl der langsamen Antworten verringerten sich im folgenden Test signifikant. Es blieben aber noch immer einige langsame Antworten übrig. Wo genau in der DNS Infrastruktur das eigentliche Problem lag konnte ich zwar nicht ermitteln, aber mit der Einrichtung eines lokalen DNS Servers, welcher die verwendeten Namen chached konnte das Problem endgültig beseitigt werden.

 

Fall gelöst

 

 

 

 

Verfasst von:

Sancho Fock

Alle Beiträge anzeigen

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Neueste Beiträge

  • Cross Platform File Picker fpr Delphi
  • Ein neues Projekt
  • DSA Style Solo Abenteuer Das Labor als Browserspiel
  • Autorentoolkit für die LGE
  • DSA Style Solo Abenteuer – Das Labor

Neueste Kommentare

    Archive

    • November 2023
    • Juli 2023
    • April 2023
    • Mai 2021
    • Oktober 2018
    • März 2018
    • Januar 2018
    • Dezember 2017

    Kategorien

    • about me
    • Crytonomicon
    • DSA
    • Game
    • Info
    • Performance
    • Uncategorized

    Meta

    • Anmelden
    • Feed der Einträge
    • Kommentare-Feed
    • WordPress.org

    Stolz präsentiert von WordPress | Theme: BusiCare Dark von SpiceThemes