2008-12-04 9 views
191

Dies ist möglicherweise die falsche Frage zu stellen, aber, was ist der beste Weg, um eine große Last auf eine asp.net Web-Anwendung zu replizieren? Gibt es eine einfache Möglichkeit, viele Anfragen auf bestimmten Seiten zu simulieren? Oder ist es am besten, einen Profiler zu verwenden, um eine einzelne Anfrage zu verfolgen und dann davon zu lernen, ob die Leistung in Ordnung ist?Der beste Weg zum Stress-Test einer Website

Es wäre gut zu wissen, wie gut eine Web-App mit einer Server-Spezifikation funktioniert. Ich möchte in der Lage sein, starken Traffic auf meinem Testserver zu simulieren, damit ich herausfinden kann, ob der Produktionsserver gut genug ist (speziell mit iis/asp.net und nicht db performance).

+0

Wenn Sie verwandte Inhalte betrachten, gibt es einige Beiträge zu diesem Thema. Siehe Stress-, Last- und Leistungstests. Und es muss nicht spezifisch für asp.net sein, alle HTTP-Tools können die Aufgabe erledigen. – Loki

+2

Sie haben Recht, aber die Antworten hier sind anders als sonst wo. es scheint, dass es sich lohnt, erneut zu fragen. –

+8

Die Frage wurde als nicht konstruktiv geschlossen, hat aber +126, wurde 65-mal gezeigt und 83.243-mal angesehen. :) –

Antwort

53

Mein Vorschlag ist, dass Sie zuerst einige automatisierte Tests durchführen. Verwenden Sie selenium dafür.

Dann Selenraster bereitstellen, um auf mehreren Computern gleichzeitig zu testen.

Obwohl Selen als ein automatisiertes Testwerkzeug ziemlich schnell läuft, macht es einen Mini-Stresstest. Wenn Sie dieselbe Automatisierung gleichzeitig auf mehreren Computern in Ihrem Netzwerk ausführen, können Sie sehen, wie sich das System verhält.

Wenn Sie Antwortzeiten aufnehmen möchten, haben sie eine coole API, die Sie verwenden können, um einige Skripts zu schreiben, um Ihre Automatisierungen auszuführen.

Edit: Selen ist ziemlich einfach zu bedienen, und es behauptet, Inhalte zu pagen, wenn Sie den Inhalt testen möchten. Es kopiert auch Ihre Bewegung durch die Seite, wenn Sie wünschen (das wäre mein Vorschlag) navigieren Sie einfach die Seite viel, und speichern Sie es dann für die Automatisierung. Vermeiden Sie Behauptungen, damit Selen schneller läuft.

+1

Wir verwenden Selen ausgiebig für UI-Tests, und ich hatte gerade eine Unterhaltung mit unserem QA-Chef über die mögliche Bereitstellung einer "Payload" -App auf all unseren Benutzermaschinen, die ein Selen auslösen könnten Test zu einem geplanten Zeitpunkt. Oder noch besser wäre eine Reihe von virtuellen Boxen, die alle die Website auf einmal hämmern. – Josh

+1

Josh, das ist die Idee hinter Selenium-Grid ... –

+51

Selen ist ein nettes Werkzeug, aber es scheint mir nicht als ein effizienter Weg, um etwas zu testen. –

48

JMeter wäre ein solches Werkzeug. Kann ein bisschen schwer zu erlernen und zu konfigurieren sein, aber es ist es normalerweise wert.

+17

Sehr schwer zu lernen, ich konnte nicht einmal anfangen! ; P – leppie

+1

Ja, es ist schwer zu lernen. Ich versuche einen Belastungstest für eine Website auf meinem localhost durchzuführen, damit ich einige Statistiken haben kann. Was ich wissen möchte, ist, wie viel Zeit es dauert, eine Website zu laden, wenn 1000 Benutzer es gleichzeitig verwenden. Ich suche weiter nach einer Antwort. :) – noobcode

+0

Kannst du auch ein Tutorial verlinken? Es ist eine bizarre Schnittstelle ... – DeepSpace101

31

Mit dem Tool ab (Apache-Bench) können Sie viele Anfragen an eine einzelne Seite senden und angeben, wie viele Clients Sie verwenden möchten und wie viele gleichzeitige Verbindungen Sie verwenden möchten.

Dies kann der erste Schritt bei der Entwicklung einer Website sein. Testen Sie einfach einige Seiten mit einer bestimmten Auslastung. Diese Art des Benchmarking kann zu Problemen führen, etwa wenn Caching zu häufig verwendet wird.

Später möchten Sie vielleicht ein Werkzeug, das einige konkrete Verkehr und nicht für eine einzelne Seite simulieren. Ich habe noch keinen Hinweis auf ein solches Tool.

9

Vielleicht grinder wird helfen? Sie können simultane Anfragen von Threads und leichtgewichtigen Prozessen simulieren oder Tests über mehrere Maschinen verteilen. Ich benutze es ausgiebig mit Erfolg jedes Mal.

+1

Vergessen zu hinzufügen, dass es von Jython-Skripten angetrieben wird – mcveat

+8

Ich dachte, Grinder war eine App? – spydon

+2

No Way bin ich auf diesen Link auf meinem Arbeitsplatz pc .. – Shawson

5

Wir haben versucht, ein paar Anwendungen, beide Versuche von kommerziellen Produkten und frei verfügbaren. Letztendlich war es die Testversion der Team Test Load Agent Software, die wir ausprobiert haben. Es funktioniert definitiv großartig und ist ziemlich einfach zu bedienen. Auf lange Sicht wurde unser Argument verstärkt, zu Team Foundation Server zu wechseln und alle Teile der Abteilung mit den entsprechenden Werkzeugen auszustatten.

Der offensichtliche Nachteil ist jedoch der Preis.

2

Testen Sie für Webdienste, Seifenreste oder WCF (einschließlich WebHttpBinding) SOA Cleaner. Herunterladbar von: http://xyrow.com. Es gibt eine kostenlose Version, und es erfordert keine Installation. Es kann auch Lasttests durchführen.

2

Ein weiteres Tool Ich mag es, öffnen STA: http://opensta.org/

Es ist vor allem auf die Performance-Tests konzentriert und es ist frei.

69

Versuchen Sie http://loadimpact.com das Beste, was ich bis jetzt gefunden habe, aber keine Alternative dazu kann ich finden.

+0

Ich versuchte es auch. Für einfache Belastungstests ist es super schnell und einfach einzurichten. – YvesR

+8

Funktioniert jedoch nur für öffentliche Sites. – Jos

+1

Dieses Tool kann nicht verschiedene Aktionen auf der Website simulieren. –

3

Ich habe WebLOAD für diese Art von Projekt verwendet. Es ist einfach, Skripte zu erstellen, und es hat Unterstützung für die Überwachung von ASP.NET-Statistiken integriert

+0

Funktioniert nur auf PC! :( –

Verwandte Themen