Maison développement back-end Golang Comment charger les applications de test du langage Go

Comment charger les applications de test du langage Go

May 08, 2024 am 09:48 AM
go go语言 并发请求 负载测试

Comment utiliser wrk pour charger des applications Go de test : installez les outils Go et wrk. Créez une API Go HTTP à titre d'exemple. Utilisez wrk pour les tests de charge : wrk -t 100 -c 1000 -d 30s http://localhost:8080/health Résultats de l'interprétation : latence moyenne, requêtes par seconde, 99 % de latence.

Comment charger les applications de test du langage Go

Comment charger un test dans les applications Go

Introduction

Les tests de charge sont essentiels pour évaluer les performances d'une application lors du traitement d'un grand nombre de requêtes simultanées. Dans cet article, nous allons voir en profondeur comment réaliser des tests de charge dans les applications Go et l'illustrer à l'aide d'un cas pratique.

Outils

Nous avons besoin des outils suivants pour les tests de charge :

  • go : langue Go (installée) go:Go 语言(已安装)
  • wrk
  • wrk : outil de test de charge HTTP

Cas pratique : Benchmark HTTP API

Prenons une simple API Go HTTP comme exemple. Il fournit un point de terminaison "/health" qui renvoie une réponse JSON sur l'état de l'application.

1. Créez une API HTTP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

package main

 

import (

    "fmt"

    "net/http"

)

 

// healthEndpoint 处理 "/health" 请求。

func healthEndpoint(w http.ResponseWriter, r *http.Request) {

    // 返回应用程序状态。

    fmt.Fprintf(w, `{ "status": "healthy" }`)

}

 

func main() {

    // 注册 "/health" 处理程序。

    http.HandleFunc("/health", healthEndpoint)

 

    // 监听并服务 HTTP 请求。

    http.ListenAndServe(":8080", nil)

}

Copier après la connexion
2. Utilisez wrk pour les tests de charge

1

wrk -t 100 -c 1000 -d 30s http://localhost:8080/health

Copier après la connexion

Cette commande créera 100 threads simultanés et exécutera 1 000 requêtes en 30 secondes.

3. Interprétation des résultats

La sortie ressemble à :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

Running 30s test @ http://localhost:8080/health

  100 threads and 1000 connections

  Thread Stats   Avg      Stdev     Max   +/- Stdev

    Latency    39.25ms   15.28ms   148ms    67.72%

    Req/Sec    32.82k   21.70k   80.00k    70.18%

  Latency Distribution

     50%   34.11ms

     75%   42.99ms

     90%   54.76ms

     99%   100.87ms

  Req/Sec Distribution

     50%   28.02k

     75%   32.41k

     90%   59.89k

     99%   75.01k

Total: 984141 requests in 30.01s, 116.53MB read

Requests/sec:   32795.55

Transfer/sec:      4.01MB

Copier après la connexion

Cette sortie affiche :
  • Latence moyenne :
  • 39,25 ms
  • Requêtes par seconde (QPS) :
  • 32,82k
  • 9 9% Latence :
  • 100,87 ms

Conclusion

Ce tutoriel montre comment effectuer des tests de charge à l'aide de wrk dans une application Go. Les tests de charge sont importants pour évaluer les performances de votre application et identifier les goulots d'étranglement potentiels. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment envoyer des messages Go WebSocket ? Comment envoyer des messages Go WebSocket ? Jun 03, 2024 pm 04:53 PM

Comment envoyer des messages Go WebSocket ?

Comment éviter les fuites de mémoire dans l'optimisation des performances techniques de Golang ? Comment éviter les fuites de mémoire dans l'optimisation des performances techniques de Golang ? Jun 04, 2024 pm 12:27 PM

Comment éviter les fuites de mémoire dans l'optimisation des performances techniques de Golang ?

La différence entre les tests de performances et les tests unitaires en langage Go La différence entre les tests de performances et les tests unitaires en langage Go May 08, 2024 pm 03:09 PM

La différence entre les tests de performances et les tests unitaires en langage Go

Comment effectuer des tests de concurrence et le débogage dans la programmation simultanée Java ? Comment effectuer des tests de concurrence et le débogage dans la programmation simultanée Java ? May 09, 2024 am 09:33 AM

Comment effectuer des tests de concurrence et le débogage dans la programmation simultanée Java ?

Comment faire correspondre les horodatages à l'aide d'expressions régulières dans Go ? Comment faire correspondre les horodatages à l'aide d'expressions régulières dans Go ? Jun 02, 2024 am 09:00 AM

Comment faire correspondre les horodatages à l'aide d'expressions régulières dans Go ?

La différence entre la langue Golang et Go La différence entre la langue Golang et Go May 31, 2024 pm 08:10 PM

La différence entre la langue Golang et Go

Bonnes pratiques en matière de documentation du framework Golang Bonnes pratiques en matière de documentation du framework Golang Jun 04, 2024 pm 05:00 PM

Bonnes pratiques en matière de documentation du framework Golang

Bibliothèques technologiques Golang et outils utilisés dans l'apprentissage automatique Bibliothèques technologiques Golang et outils utilisés dans l'apprentissage automatique May 08, 2024 pm 09:42 PM

Bibliothèques technologiques Golang et outils utilisés dans l'apprentissage automatique

See all articles