Golang Learning-Praxis zum Testen der Webanwendungsleistung
Golang Learning Web Application Performance Testing Practice
Mit der Entwicklung des Internetzeitalters ist die Bedeutung von Webanwendungen in Produktionsumgebungen immer wichtiger geworden. Webanwendungen müssen über eine hohe Leistung und hohe Parallelität verfügen, um die Anforderungen der Benutzer zu erfüllen. Wenn Sie die hohe Leistung und hohe Parallelität von Webanwendungen sicherstellen möchten, müssen Sie Leistungstests durchführen.
In diesem Artikel wird erläutert, wie Sie mithilfe der Go-Sprache Leistungstests für Webanwendungen durchführen und den Lesern praktische Erfahrungen vermitteln.
1. Vorbereitung
Zuerst müssen wir die Go-Sprachentwicklungsumgebung und einige häufig verwendete Frameworks für diese Art der Anwendungsentwicklung installieren. Es wird empfohlen, das Gin-Framework für die Entwicklung von Webanwendungen zu verwenden.
Nach der Installation der Go-Sprachumgebung und des Gin-Frameworks müssen wir einige Leistungstesttools installieren. Zu den häufig verwendeten gehören ApacheBench (ab), wrk usw.
2. Leistungstest
Bevor wir das Leistungstesttool verwenden, müssen wir zuerst unsere Webanwendung starten. Das Folgende ist ein Beispielcode für eine Webanwendung, die mit dem Gin-Framework erstellt wurde:
package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/hello", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "Hello world!", }) }) r.Run() // listen and serve on 0.0.0.0:8080 }
Diese einfache Webanwendung bietet nur eine GET-Methode, um „Hallo Welt!“-Informationen im JSON-Format zurückzugeben.
Als nächstes können wir das ApacheBench-Tool verwenden, um Leistungstests durchzuführen. ApacheBench ist ein von der Apache Software Foundation entwickeltes Tool zum schnellen und einfachen Stresstesten von Webservern. Unter der Befehlszeile können wir den folgenden Befehl zum Testen verwenden:
ab -n 1000 -c 100 http://localhost:8080/hello
Unter diesen steht -n für die Anzahl der Anfragen, -c für die Anzahl der Parallelität und http://localhost:8080/hello für die Adresse von unsere Webanwendung.
Nachdem dieser Befehl ausgeführt wurde, können wir sehen, dass ApacheBench die folgenden Ergebnisse ausgibt:
Server Software: Server Hostname: localhost Server Port: 8080 Document Path: /hello Document Length: 26 bytes Concurrency Level: 100 Time taken for tests: 0.431 seconds Complete requests: 1000 Failed requests: 0 Total transferred: 190000 bytes HTML transferred: 26000 bytes Requests per second: 2321.25 [#/sec] (mean) Time per request: 43.128 [ms] (mean) Time per request: 0.431 [ms] (mean, across all concurrent requests) Transfer rate: 431.51 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.2 0 2 Processing: 8 42 11.1 40 71 Waiting: 8 42 10.8 40 71 Total: 8 42 11.1 40 72 Percentage of the requests served within a certain time (ms) 50% 40 66% 49 75% 53 80% 55 90% 60 95% 68 98% 71 99% 72 100% 72 (longest request)
Unter diesen haben die einzelnen Indikatoren folgende Bedeutung:
- Serversoftware: Der Softwarename des Servers.
- Server-Hostname: Der Hostname des Servers.
- Server-Port: Die Portnummer des Servers.
- Dokumentpfad: Der angeforderte Dokumentpfad.
- Dokumentlänge: Die angeforderte Dokumentlänge.
- Parallelitätsstufe: Anzahl der Parallelitäten.
- Zeitaufwand für Tests: Zeitaufwand für Tests.
- Abgeschlossene Anfragen: Anzahl der abgeschlossenen Anfragen.
- Fehlgeschlagene Anfragen: Anzahl der fehlgeschlagenen Anfragen.
- Übertragene Gesamtmenge: Die übertragene Datenmenge.
- Übertragenes HTML: Die Menge der übertragenen HTML-Daten.
- Anfragen pro Sekunde: Anzahl der Anfragen pro Sekunde.
- Zeit pro Anfrage: Die für jede Anfrage aufgewendete Zeit.
- Zeit pro Anfrage: Die durchschnittliche Zeit, die jede Anfrage benötigt (einschließlich aller gleichzeitigen Anfragen).
- Übertragungsrate: Übertragungsrate.
Der wichtigste Indikator sind die Anfragen pro Sekunde. Sie stellt die Rechenleistung des Servers dar. Je höher sie ist, desto besser ist die Leistung des Servers. Gleichzeitig sind die Zeit pro Anfrage (die für jede Anfrage benötigte Zeit) und die Zeit pro Anfrage (die durchschnittliche für jede Anfrage benötigte Zeit) ebenfalls sehr wichtige Indikatoren. Sie stellen die Verarbeitungsleistung einer einzelnen Anfrage dar, also die Antwortgeschwindigkeit Je niedriger der Wert, desto langsamer ist die Leistung des Servers.
Zusätzlich zu ApacheBench können wir auch das Tool wrk verwenden, um Leistungstests von Webanwendungen durchzuführen. wrk ist ein modernes HTTP-Benchmark-Testtool mit den Vorteilen hoher Parallelität und hoher Leistung.
Auch hier müssen wir zuerst unsere Webanwendung starten. In der Befehlszeile können wir zum Testen den folgenden Befehl verwenden:
wrk -t 4 -c 1000 -d 10s http://localhost:8080/hello
Darunter steht -t für die Anzahl der Threads, -c für die Anzahl der Parallelität, -d für die Testdauer und http://localhost:8080 /hello ist unsere Webanwendung. Die Adresse des Programms.
Nachdem dieser Befehl ausgeführt wurde, können wir sehen, dass wrk die folgenden Ergebnisse ausgibt:
Running 10s test @ http://localhost:8080/hello 4 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 4.97ms 51.05us 5.57ms 78.15% Req/Sec 50.73k 2.10k 54.41k 79.00% 2034638 requests in 10.00s, 381.47MB read Socket errors: connect 748, read 1969, write 0, timeout 0 Requests/sec: 203513.06 Transfer/sec: 38.14MB
Unter diesen haben die einzelnen Indikatoren folgende Bedeutung:
- Thread-Statistiken: Thread-Statistikinformationen.
- Latenz: Verarbeitungslatenz.
- Req/Sec: Anzahl der Anfragen pro Sekunde.
- Anfragen in 10,00 Sekunden: Anzahl der Anfragen in 10 Sekunden.
- MB gelesen: Die Menge der gelesenen Daten.
- Anfragen/Sek.: Anzahl der Anfragen pro Sekunde.
- Übertragung/Sek.: Übertragungsrate.
Ebenso sind Requests/sec (Anzahl der Requests pro Sekunde) und Latency (Verarbeitungsverzögerung) die wichtigsten Indikatoren. Unter diesen ist Requests/sec (Anzahl der Anfragen pro Sekunde) auch ein wichtiger Indikator zur Messung der Serverleistung.
3. Zusammenfassung
In diesem Artikel wird die Verwendung der Go-Sprache für Leistungstests von Webanwendungen vorgestellt, einschließlich Methoden und Vorsichtsmaßnahmen für Leistungstests mit ApacheBench und wrk. Bei der Durchführung von Leistungstests müssen wir auf die Hardware- und Softwarekonfiguration der Testumgebung sowie auf Parametereinstellungen und Ergebnisinterpretation während des Testprozesses achten. Gleichzeitig müssen wir in der Praxis auch Leistungstests basierend auf unterschiedlichen Geschäftsanforderungen und -szenarien durchführen, um die Leistung und Zuverlässigkeit von Webanwendungen zu verbessern.
Das obige ist der detaillierte Inhalt vonGolang Learning-Praxis zum Testen der Webanwendungsleistung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Das sichere Lesen und Schreiben von Dateien in Go ist von entscheidender Bedeutung. Zu den Richtlinien gehören: Überprüfen von Dateiberechtigungen, Schließen von Dateien mithilfe von Verzögerungen, Validieren von Dateipfaden, Verwenden von Kontext-Timeouts. Das Befolgen dieser Richtlinien gewährleistet die Sicherheit Ihrer Daten und die Robustheit Ihrer Anwendungen.

Wie konfiguriere ich Verbindungspooling für Go-Datenbankverbindungen? Verwenden Sie den DB-Typ im Datenbank-/SQL-Paket, um eine Datenbankverbindung zu erstellen. Legen Sie MaxOpenConns fest, um die maximale Anzahl gleichzeitiger Verbindungen festzulegen. Legen Sie ConnMaxLifetime fest, um den maximalen Lebenszyklus der Verbindung festzulegen.

JSON-Daten können mithilfe der gjson-Bibliothek oder der json.Unmarshal-Funktion in einer MySQL-Datenbank gespeichert werden. Die gjson-Bibliothek bietet praktische Methoden zum Parsen von JSON-Feldern, und die Funktion json.Unmarshal erfordert einen Zieltypzeiger zum Unmarshalieren von JSON-Daten. Bei beiden Methoden müssen SQL-Anweisungen vorbereitet und Einfügevorgänge ausgeführt werden, um die Daten in der Datenbank beizubehalten.

Der Unterschied zwischen dem GoLang-Framework und dem Go-Framework spiegelt sich in der internen Architektur und den externen Funktionen wider. Das GoLang-Framework basiert auf der Go-Standardbibliothek und erweitert deren Funktionalität, während das Go-Framework aus unabhängigen Bibliotheken besteht, um bestimmte Zwecke zu erreichen. Das GoLang-Framework ist flexibler und das Go-Framework ist einfacher zu verwenden. Das GoLang-Framework hat einen leichten Leistungsvorteil und das Go-Framework ist skalierbarer. Fall: Gin-Gonic (Go-Framework) wird zum Erstellen der REST-API verwendet, während Echo (GoLang-Framework) zum Erstellen von Webanwendungen verwendet wird.

Best Practices: Erstellen Sie benutzerdefinierte Fehler mit klar definierten Fehlertypen (Fehlerpaket). Stellen Sie weitere Details bereit. Protokollieren Sie Fehler ordnungsgemäß. Geben Sie Fehler korrekt weiter und vermeiden Sie das Ausblenden oder Unterdrücken. Wrappen Sie Fehler nach Bedarf, um Kontext hinzuzufügen

Die FindStringSubmatch-Funktion findet die erste Teilzeichenfolge, die mit einem regulären Ausdruck übereinstimmt: Die Funktion gibt ein Segment zurück, das die passende Teilzeichenfolge enthält, wobei das erste Element die gesamte übereinstimmende Zeichenfolge und die nachfolgenden Elemente einzelne Teilzeichenfolgen sind. Codebeispiel: regexp.FindStringSubmatch(text,pattern) gibt einen Ausschnitt übereinstimmender Teilzeichenfolgen zurück. Praktischer Fall: Es kann verwendet werden, um den Domänennamen in der E-Mail-Adresse abzugleichen, zum Beispiel: email:="user@example.com", pattern:=@([^\s]+)$, um die Übereinstimmung des Domänennamens zu erhalten [1].

So beheben Sie häufige Sicherheitsprobleme im Go-Framework Angesichts der weit verbreiteten Einführung des Go-Frameworks in der Webentwicklung ist die Gewährleistung seiner Sicherheit von entscheidender Bedeutung. Im Folgenden finden Sie eine praktische Anleitung zur Lösung häufiger Sicherheitsprobleme mit Beispielcode: 1. SQL-Injection Verwenden Sie vorbereitete Anweisungen oder parametrisierte Abfragen, um SQL-Injection-Angriffe zu verhindern. Beispiel: constquery="SELECT*FROMusersWHEREusername=?"stmt,err:=db.Prepare(query)iferr!=nil{//Handleerror}err=stmt.QueryR

Backend Learning Path: Die Erkundungsreise von Front-End zu Back-End als Back-End-Anfänger, der sich von der Front-End-Entwicklung verwandelt, Sie haben bereits die Grundlage von Nodejs, ...
