Heim  >  Artikel  >  Backend-Entwicklung  >  Golang Learning-Praxis zum Testen der Webanwendungsleistung

Golang Learning-Praxis zum Testen der Webanwendungsleistung

PHPz
PHPzOriginal
2023-06-24 11:18:101091Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn