Ich habe einen Auslastungstest für die Smartphone-Spiel-App durchgeführt, daher möchte ich mitteilen, wie es gemacht wurde. Dieses Mal haben wir einen Belastungstest mit 100.000 DAUs durchgeführt.
Zunächst wird der Belastungstest mit einer einfachen Konfiguration durchgeführt, einschließlich der Bedeutung der Kommunikationsbestätigung. Dieses Mal habe ich eine API erstellt, die nur den übergebenen JSON wiedergibt, und einen Lasttest mit Locust durchgeführt. Wenn Sie dies plötzlich mit mehreren Einheiten tun, wissen Sie nicht, wo Sie Anpassungen vornehmen müssen, wenn die Leistung nicht erreicht wird. Lassen Sie uns zunächst sehen, wie gut das Django-Framework auf dem App-Server selbst funktioniert. (Ursprünglich ist es besser, dies mit einfachem Django zu tun, diesmal jedoch in Form des Hinzufügens einer API zu Django des Anwendungsservers, den wir entwickeln.)
Infolgedessen handhabte der App-Server von Django ungefähr 600 RPS bei ungefähr 70% CPU-Auslastung. Ich denke, es ist eine gute Idee, es mit dem Benchmark von Django selbst zu vergleichen und zu überprüfen, ob es extrem langsam ist.
Ein weiterer Vorteil dieses Tests besteht darin, dass Sie sehen können, ob die Lade-Client-Heuschrecke selbst eine gute Leistung erbringen kann.
Wenn die einfache Konfiguration funktioniert, erstellen Sie ein Testszenario.
Bestimmen Sie bei der Durchführung eines Belastungstests die erwarteten Benutzerdefinitionen und Ziele, die erreicht werden sollen.
Ich denke, es hängt von den Eigenschaften der App ab, aber dieses Mal werden wir die Benutzer wie folgt als ** starke Benutzer **, ** allgemeine Benutzer **, ** neue Benutzer ** definieren.
Selbst wenn wir von 100.000 DAUs ausgehen, unterscheiden sich Anzahl und Art der APIs, die getroffen werden können, je nachdem, ob es viele neue Benutzer oder schwere Benutzer gibt, und die Last ist völlig unterschiedlich. Wenn es viele starke Benutzer gibt, wird der Kern des Spiels, wie Quests und PvP, viel gespielt. Wenn es dagegen viele neue Benutzer gibt, wird die API für die Registrierungsverarbeitung nach der Anmeldung häufig beeinträchtigt.
Da wir die Benutzer in verschiedene Segmente unterteilt haben, haben wir wie folgt definiert, welche APIs als Nächstes betroffen sind.
Ich habe tatsächlich ein Szenario mit Locust erstellt und einen Lasttest für das durchgeführt, was oben definiert wurde.
Plötzlich können Sie es mit nur einem ohne Auslastungstest mit mehreren App-Servern tun. Ziel ist es, die Kommunikation von Testszenarien zu bestätigen und Kosten zu senken. Das plötzliche Einrichten mehrerer App-Server ist nicht gut, da es selbst bei verschiedenen Versuchen und Fehlern aufgrund von Fehlern Geld kostet. Testen Sie das Testszenario einschließlich MySQL und Redis mit der folgenden Konfiguration.
Richten Sie den Server schließlich wie unten gezeigt ein und führen Sie Auslastungstests durch, bis der Ziel-RPS erreicht ist. Wenn die Belastung des App-Servers hoch ist (die CPU beträgt 70% oder mehr usw.), erhöhen Sie den App-Server oder verbessern Sie die Spezifikationen. Gleiches gilt für MySQL und Redis.
Ich habe darüber geschrieben, wie ich den Belastungstest in meinem Projekt durchgeführt habe, aber die folgenden Punkte waren die Punkte.
Recommended Posts