Seite 1 von 1

Effizienz- und Belastungstests...

Verfasst: 23.04.2007 05:26
von DanielHeinrich
Hi!

Wenn ich einen Mod schreibe stellen sich für mich die Fragen: Wie effizient ist dieser Mod und wie stark belastet er das Forum.

Nun, die Effizienz kann man durch Vergleichen verschiedener Verfahren (meiner Meinung nach) relativ einfach in den Griff kriegen.

Was einen da wesentlich mehr interessiert: Woran erkenne man die Potentielle Belastung die der Mod bei einem Forum erzeugt(Wie stark verlangsamt er das Board?). Das Problem ist dass man einen Mod meist nicht nur für sich selber sondern auch noch für (hoffentlich) noch viele andere so dass man die Umgebung(Anz. der User, Hardwareausstattung, installierte Software,...) nicht kennt und somit die Belastung die der eigene Mod auf den Boards anderer User nicht vorhersagen kann.

Ein Ansatz wäre es verschiedene Rechenkapazitäten zu emulieren, und diese dann mit verschiedenen Belastungsstärken zu testen. Dies bringt einen dann allerdings an das neue Problem: Man braucht um akzeptable Ergebnisse zu erzielen eine entsprechende Rechenpower braucht um auch das Ergebnis auf stärkeren Maschienen testen zu können.

Nun die Frage: kennt hier jemand eine (möglichst kostengünstige^^) Möglichkeit solche Testreihen zu realisieren? Wäre über jeden (brauchbaren) Hinweis echt froh.


cu

Daniel

Verfasst: 24.04.2007 18:14
von killerbees19
Ich würde mal meinen, es reicht, wenn du eine Zeitmessung (Generierungszeit) ins Forum einbaust und im Footer anzeigen lässt. Also einfach wie lange es gedauert hat die Seite zu erzeugen. Dann merkst du recht gut, ob der MOD das Forum jetzt um 0,1 oder 0,2 Sekunden langsamer macht ;-)


MfG Christian

Verfasst: 24.04.2007 19:25
von Jensemann
Das geht eigentlich nur mit Erfahrung und Kenntnis der verwendeten Backends (Datenbanken) und Algorithmen. Wenn du SQL Abfragen hast, die sehr von der Anzahl der User oder Posts abhängig sind, ist das ein ernster Hinweis darauf, das man sich dort mehr Gedanken machen sollte. Diese Bereiche zu erkennen, ist aber m.E. nicht unbedingt Aufgabe irgendwelcher Tests, diese macht man trotzdem _ergänzend_, sondern es ist deine Aufgabe als Programmierer diese Bereich zu kennen.

In Hinblick auf MySQL, sind sicher auch die Ausgaben der EXPLAIN-Funktionalität von MySQL oft hilfreich.

http://dev.mysql.com/doc/refman/5.1/de/explain.html

Verfasst: 25.04.2007 00:28
von DanielHeinrich
Jensemann hat geschrieben:Das geht eigentlich nur mit Erfahrung und Kenntnis der verwendeten Backends (Datenbanken) und Algorithmen.
Nun, Kenntnis über die Datenbanken -- äh leider habe ich mich noch nicht wirklich mit den Interna von PHP, Apache oder MySQL auseinandergesetzt.

Was die Algorithmen betrifft die ich in meinem nächsten Mod verwenden will: ich denke doch dass ich nicht nur verstehe wie sie funktionieren sondern auch weiss dass sie schon "relativ" gut optimiert sind. Ich denke ich kann auch abschätzen wie stark sich der Rechenaufwand meiner Funktionen in Abhängigkeit mit den übergebenen Parametern verändert.
Wenn du SQL Abfragen hast, die sehr von der Anzahl der User oder Posts abhängig sind, ist das ein ernster Hinweis darauf, das man sich dort mehr Gedanken machen sollte. Diese Bereiche zu erkennen, ist aber m.E. nicht unbedingt Aufgabe irgendwelcher Tests, diese macht man trotzdem _ergänzend_, sondern es ist deine Aufgabe als Programmierer diese Bereich zu kennen.
Das ist richtig. mein Problem ist nicht dass ich die potentielle Problemzone nicht kennen würde -- die kenne ich bereits(nein sie sind noch nicht implementiert). Die Frage ist lediglich: Woran erkenne ich ob das was ich gebaut habe zuviel Rechenleistung "frisst", weil dafür müsste man die Frage klären wann zuviel eigentlich zuviel ist. :grin: .
Deswegen wollte ich das Ganze ja später auch unter Verschiedensten Bedingungen testen damit ich ungefähr abschätzen kann bei welcher Belastung welcher Server in die Knie geht.
Ich weiss, dem kann man mit bestimmten Schutzmaßnahmen entgegenwirken, da ich allerdings immer vom Worst-Case-Fall ausgehe(ich weiss ich bin da ein bissel paranoid) in dem diese Schutzmaßnahmen nicht greifen bzw. nicht mehr hinreichend sind.
In Hinblick auf MySQL, sind sicher auch die Ausgaben der EXPLAIN-Funktionalität von MySQL oft hilfreich.

http://dev.mysql.com/doc/refman/5.1/de/explain.html
Danke dass du mich daran erinnerst -- hab diese Funktion echt vergessen *g*

cu

Daniel

Verfasst: 25.04.2007 01:06
von Jensemann
DanielHeinrich hat geschrieben: Deswegen wollte ich das Ganze ja später auch unter Verschiedensten Bedingungen testen damit ich ungefähr abschätzen kann bei welcher Belastung welcher Server in die Knie geht.
Ich weiss nicht was du vor hast, aber ich glaube nicht daran das man solche Tests ernsthaft durchführen kann. Zu Unterschiedlich die Leistungsklassen die man aus der selben Hardware rausholen kann, nur indem man Kleinigkeiten ändert. Ich verfahre nach dem Schema alles so resourcenschonend wie möglich zu programmieren. Alles was dann kommt, ist mir egal. Was soll ich auch gross machen, wenn jemand Software XY auf viel zu schmaler Hardware benutzt, who cares.

Den Server am crashen zu hindern ist nicht die Aufgabe des PHP Scripts. Das PHP Script darf sich alle Resourcen nehmen die es kriegen kann, alles kein Problem. Das Limit setzt nicht das Script, sondern der Admin. Sprich PHP Memory Limits, MySQL Begrenzungen, etc ...

In kurz: Schau das alles so wenig Resourcen frisst wie möglich. Wenn es Probleme gibt mit User/Post-Mengen, dokumentiere dies. Es hat keinen Sinn, wenn man jetzt anfängt Loadprüfungen in jeder Software zu implementieren.