Gibt es eine Möglichkeit zu testen, wie sich die Site unter Last verhält?

9

Ich habe eine Asp.net MVC-Website erstellt und sie auf einem gemeinsam genutzten Hosting-Anbieter gehostet. Da meine Website eine sehr allgemeine Idee enthält, wird sie möglicherweise in Zukunft mehrere Benutzer gleichzeitig haben.

Daher habe ich mir überlegt, wie ich meine Website auf die Leistung beim Laden testen kann. Zum Beispiel, wie sich die Website verhält, wenn 100 oder 1000 Benutzer gleichzeitig online sind und auf der Website surfen. Dadurch verstehe ich auch, ob meine LINQ-Abfragen gut geschrieben sind oder nicht.

Pankaj Upadhyay
quelle

Antworten:

12

Zuallererst ist der richtige Begriff Stresstest . Es gibt einige Lösungen für Website-Stresstests. Eine gehostete Lösung, die ich empfehlen würde, ist loadimpact . Sie bombardieren Ihre Site mit Anfragen von verschiedenen Servern weltweit und geben Ihnen einen Analysebericht darüber, wie Ihre Site mit dem Stress umgegangen ist. Sie haben einen kostenlosen Test, bei dem Sie sich einen Überblick verschaffen können. Für mehr müssen Sie jedoch eine Abonnementgebühr zahlen.

Diese Arten von Tests testen nur die Website von den Besuchern von Aussichtspunkt, für genauere Informationen sollten Sie Ihre Anwendung lokal Profil, und ich weiß nicht wirklich mehr habe , etwas zu den vorherigen Antworten hinzuzufügen, ich bin mit Apache JMeter als auch .

Und schließlich sollten Sie sich als leistungsbewusster Webentwickler YSlow ansehen :

YSlow analysiert die Leistung von Webseiten, indem alle Komponenten auf der Seite untersucht werden, einschließlich der Komponenten, die mithilfe von JavaScript dynamisch erstellt wurden. Es misst die Leistung der Seite und bietet Verbesserungsvorschläge.

YSlow für Firefox ist in das Firebug-Webentwicklungstool für Firefox integriert.

Meistens finde ich, dass Javascript der eigentliche Engpass ist und nicht der Back-End-Code oder die Datenbank. Natürlich können schlecht geschriebene Abfragen eine große Leistungsbeeinträchtigung sein, aber nachdem Sie sich mit diesen befasst haben, führen Sie immer YSlow aus und folgen Sie den Vorschlägen, es ist ein Lebensretter.

Weiterführende Literatur:

auf StackOverflow natürlich!

Yannis
quelle
Informieren Sie sich über andere Lösungen, bevor Sie die Abonnementgebühr für loadimpact bezahlen. Es gibt einige ähnliche Lösungen. Ich liebe es, aber die Arbeit hat die Gebühr bezahlt, nicht ich :)
Yannis
Ich werde den kostenlosen Test verwenden ... möchte vorerst keine strengen Tests, da dies vorerst keinen Sinn ergibt ... möchte nur auf die Idee kommen :-)
Pankaj Upadhyay
7

Sie verwenden Shared Hosting, daher ist es unwahrscheinlich, dass Sie Tests ausführen können, die die Leistung korrekt anzeigen, da nicht garantiert werden kann, auf welche Ressourcen Ihre Anwendung zu einem bestimmten Zeitpunkt zugreifen kann.

In dieser Situation würde ich jedoch zunächst einen Test isoliert auf einer dedizierten Box ausführen (dies kann Ihr eigener Laptop sein). Verwenden Sie ein Tool wie die Visual Studio Load Test Suite oder JMeter (das ich persönlich nicht ausstehen kann) und erstellen Sie eine Reihe von Tests, die einen typischen Pfad durch Ihre Anwendung darstellen (Sie sollten in der Lage sein, Informationen über einen typischen Pfad durch Verwendung zu erhalten Wenn dies nicht verfügbar ist, können Sie nur eine verwenden, die Sie für wahrscheinlich halten. Beachten Sie jedoch, dass dies keine so genaue Grundlinie ergibt. Führen Sie dann einen Hochlauftest durch, beginnen Sie bei 1 Benutzer und fügen Sie dann langsam Benutzer hinzu, bis Sie Ihre geschätzte Spitzenlast erreicht haben. Das sollte Ihnen zeigen, wie gut Ihr System insgesamt funktioniert (ich persönlich gehe gerne etwas weiter, um sicherzustellen, dass ich etwas Headroom habe).

Als letztes möchten Sie ein Profilerstellungstool wie den ANTS-Leistungsprofiler ausführen, während Sie den Test ausführen (beachten Sie, dass dies zusätzlichen Aufwand verursacht). Auf diese Weise können Sie lang laufende Abfragen und Methoden identifizieren und Hinweise darauf erhalten, wo Ihre Anwendung wirklich langsam ist (ein Tipp: Es ist fast nie so, wie Sie es sich vorstellen).

Das Hauptproblem, das Sie haben werden, ist, wie ich zuerst sagte, dass Sie sich auf Shared Hosting befinden, so dass es nahezu unmöglich ist, eine realistische Emulation der Live-Umgebung durchzuführen. Wenn Ihre Anwendung jedoch in einer ähnlichen Umgebung wie Ihre versprochenen Ressourcen ausreichend Headroom bietet, sollten Sie sicher sein, dass der Code in Ihrem Hosting Bestand haben kann, selbst wenn Sie die Grenzen Ihrer Umgebung erreichen, bevor Sie dies erwarten.

Ed James
quelle
Vielen Dank, dass Sie den Unterschied zwischen Shared Hosting-Tests und dem eigenen Server beleuchtet haben.
Pankaj Upadhyay
3

Sie können sich Tools wie JMeter oder The Grinder ansehen .

Bisher habe ich nur JMeter verwendet. Es ist ein grafisches Tool, mit dem Sie ganz einfach Testpläne erstellen können. Sie können mehrere Benutzer mit mehreren Threads simulieren. Sie können auch typische Nutzungen Ihrer Website aufzeichnen, indem Sie Ihren Browser mit einem JMeter-Proxy verknüpfen und die eigentliche Arbeit erledigen, sodass Sie die Anforderungen nicht von Grund auf neu schreiben müssen. Der Grinder basiert auf Skripten, wenn ich mich richtig erinnere, könnte auch gut passen.

ftr
quelle
1

Ich mag Loadimpact auch für Stresstests. Eine Sache, die ich für schnelle Überprüfungen auf meiner Website verwende, ist Apache Bench. Wenn ich einige abschließende Tests durchführen möchte, werde ich mich um einen Bezahldienst kümmern.

Meine Arbeit hat auch in WebLoads investiert, was sehr teuer ist, aber es uns ermöglicht, alle unsere Websites intern zu testen. Ich empfehle es aber nicht.

uadrive
quelle
0

Ich denke nicht, dass Lasttests manuell durchgeführt werden können, da dies mehr Zeit als erwartet in Anspruch nimmt und eine mühsame Aufgabe ist. Sie können sich wahrscheinlich für Load Runner entscheiden, das für viele Benutzer geeignet ist.

dsdsf
quelle
0

Ein Autohotkey (AHK) -Skript kann einen menschlichen Benutzer simulieren. Lass es den ganzen Tag laufen.

Sie können es auf mehreren Boxen laufen lassen, um einige Benutzer zu simulieren. Das Schöne ist, dass der Teststil vollständig unter Ihrer Kontrolle steht. Sie können 1 AHK-Skript haben, das eine Berichtsfunktion spammt, und prüfen, ob sie die Benutzer anderer Funktionen betrifft.

Obwohl ich mit den Threading-Fähigkeiten von AHK nicht vertraut bin, kann es schwierig sein, Tausende von Benutzern zu simulieren. Möglicherweise sind Sie an die Anzahl Ihrer Computer gebunden.

mike30
quelle