Wir haben eine MySQL-getriebene Website, die innerhalb von 48 Stunden gelegentlich 100K-Nutzer erreichen wird, die sich auf der Website einloggen und Einkäufe tätigen.
Wir versuchen, diese Last mit Tools wie Apache Bench und Siege zu simulieren.
Während die Schlüsselmetrik für mich die Anzahl der gleichzeitigen Benutzer ist und wir unsere Berichtsergebnisse erhalten haben, fühlen wir uns immer noch im Dunkeln.
Was ich fragen möchte, ist: Welche Arten von Dingen sollten wir testen, um diese Art von Verkehr zu antizipieren?
50 gleichzeitige Benutzer 1000 mal? 500 gleichzeitige Benutzer 10 mal?
Wir untersuchen DB-Fehler, Apache-Timeouts und Antwortzeiten. Was sollten wir uns noch ansehen?
Dies ist eine vage Frage und ich weiß, dass es keine "richtige" Antwort gibt. Wir suchen nur nach allgemeinen Überlegungen, wie wir herausfinden können, was unsere Infrastruktur realistisch handhaben kann.
Vielen Dank im Voraus!
Gleichzeitige Benutzer sind sicherlich einer der Schlüsselfaktoren - besonders, wenn es um DB-Verbindungspools usw. geht. Sie sollten jedoch auch überprüfen, ob die Seitenrate (Seiten / Sek.) Ihrer Tests auch in dem erwarteten Bereich liegt . Wenn die Think-Time in Ihren Testfällen stark abweicht, können Sie versehentlich eine viel höhere (oder niedrigere) Seitenrate als in der realen Welt simulieren. Denkzeit ist die Zeit, die der Benutzer zwischen den Seitenanforderungen verbringt - Lesen der Seite, Ausfüllen eines Formulars usw.
Je nachdem, welche anderen Informationen Sie zur Hand haben, kann dies Ihnen helfen, die Anzahl simultaner Benutzer zu simulieren: Virtuelle Benutzerrechner
Die vollständige Seitenladezeit, die vom Endbenutzer gesehen wird, ist in der Regel der wichtigste Messwert zur Bewertung der Systemleistung. Sie sollten auch nach Fehlerraten bei allen Transaktionen suchen. Sie sollten auch nach Transaktionen Ausschau halten, die niemals abgeschlossen werden. Einige Testtools melden diese nicht sehr gut und ermöglichen es simulierten Benutzern, unbegrenzt zu hängen, wenn der Server nicht antwortet ... und diese Bedingung nicht meldet. Suchen Sie nach Tools, die die Anzahl der Benutzer angeben, die auf einer bestimmten Seite oder Transaktion warten, und nach der durchschnittlichen Zeit, die diese Benutzer warten.
Was die serverseitigen Messwerte angeht, auf welchen anderen Technologien basiert Ihre App? Sie sollten verschiedene Dinge für eine .NET-Anwendung im Vergleich zu einer PHP-App betrachten.
Schließlich haben wir festgestellt, dass es sehr wertvoll ist, zu untersuchen, wie das System auf eine zunehmende Last reagiert, anstatt nur auf eine einzelne Laststufe zu schauen. Dieser Artikel geht ausführlicher darauf ein.
Idealerweise möchten Sie Ihre Verwendung für den Benutzer modellieren, aber das Erstellen simulierter Concurrent-Sitzungen für Benutzer mit 100 KB ist normalerweise nicht einfach durchzuführen. Die beste Quelle wäre es, Ihre Protokolle für die verkehrsreichste Stunde auszuchecken und eine Möglichkeit zu finden, diese Laststufe zu modellieren.
Die Datenbank ist normalerweise ein kritischer Teil der Infrastruktur, also würde ich die Anzahl und die Länge der Wartezeiten der Sperren sowie die Anzahl und die Dauer der DB-Anweisungen aufzeichnen.
Ein weiterer wichtiger Punkt ist die Länge der Festplattenwarteschlangen.
Meistens besteht der Prozess darin, entweder auf der gesamten Website oder für bestimmte Seiten nach langsamen Antworten zu suchen und dann nach der Ursache zu suchen.
Das größte Problem bei Belastungstests ist, dass es ziemlich schwierig ist, Ihr Netzwerk zu testen, und wenn Sie (wie die meisten öffentlichen Sites) eine begrenzte Bandbreite über Ihren ISP haben, kann dies zu einem Leistungsproblem führen, das sich in den Auslastungstests nicht widerspiegelt .
Tags und Links stress-testing apachebench