Cet article est le deuxième jour de Brainpad Advent Calender 2019
Bonjour @ est nissy0409240 Je suis ingénieur chez BrainPad Cela fait moins d'un mois en 2019 Comment va tout le monde
J'ai pu aller au Tokyo Dome en privé cette année C'était une année émouvante En parlant de Tokyo Dome, baseball En parlant de baseball, de lanceurs et de frappeurs Dans cette entrée indépendamment d'une telle préface Je vais vous présenter les fonctions de base de Locust, un outil de test de charge qui vous permet d'écrire des scénarios en Python.
Locust est un outil de test de charge Python qui possède également une interface graphique. La plus grande fonctionnalité par rapport aux autres outils de test de charge est que vous pouvez écrire des scénarios en Python. Cela ressemble à un jeu de mots, mais vous pouvez aussi dire que vous devez écrire un scénario en Python.
Cliquez ici pour divers liens tels que des documents officiels
À propos, Locust est un mot anglais qui signifie batta ou criquet.
L'illustration est Tonosamabatta
Je vais l'installer immédiatement Pour installer, exécutez simplement la commande suivante
$ brew install libev
$ python3 -m pip install locustio
Exécutez la commande $ locust --help
après l'exécution, et si l'aide est affichée, l'installation est réussie.
L'illustration est la sauterelle
Le scénario est écrit dans un script Python.
Il n'y a aucune restriction sur le nom du fichier lui-même.
Cependant, si vous ne spécifiez pas le nom du fichier au démarrage, celui avec le nom de fichier locustfile.py
sera exécuté.
S'il n'y a pas de restrictions de nom de fichier, il est recommandé d'utiliser le nom de fichier locustfile.py
.
Ci-dessous un exemple
from locust import HttpLocust, TaskSet, task, between
class WebsiteTasks(TaskSet):
@task
def index(self):
self.client.get('/')
class WebsiteUser(HttpLocust):
task_set = WebsiteTasks
wait_time = between(5, 15)
Au fait, le serveur API que vous recevez est comme ça
from wsgiref.simple_server import make_server
import json
def api(environ, start_response):
status = '200 OK'
headers = [
('Content-type', 'application/json; charset=utf-8'),
('Access-Control-Allow-Origin', '*'),
]
start_response(status, headers)
return [json.dumps({'message':'hoge'}).encode("utf-8")]
with make_server('', 3000, api) as httpd:
print("Serving on port 3000...")
httpd.serve_forever()
L'illustration est Shoryo Bata
Commencez par la commande suivante
$ locust
[2019-12-01 00:56:13,884] locust.main: Starting web monitor at *:8089
[2019-12-01 00:56:13,885] locust.main: Starting Locust 0.9.0
Dans l'exemple ci-dessus, je ne cours avec aucune option
Fichier avec le scénario que vous souhaitez exécuter avec l'option -f Vous pouvez spécifier le point de terminaison que vous souhaitez atteindre avec l'option -H
Par défaut, le processus Locust démarre sur le port 8089 Il est possible de changer le port de démarrage avec l'option -P.
Si vous le spécifiez correctement Commencer comme ça
$ locust -f locustfile.py -H http://localhost:3000 -P 8089
[2019-12-02 03:38:42,717] locust.main: Starting web monitor at *:8089
[2019-12-02 03:38:42,718] locust.main: Starting Locust 0.13.2
L'illustration est un criquet bouilli
Lorsque vous accédez à http: // localhost: 8089
depuis votre navigateur après le démarrage
Vous pouvez accéder à l'interface graphique suivante
Certains éléments de réglage sont vides, alors entrez les valeurs suivantes 100 à "Nombre d'utilisateurs à simuler" 1 pour "Taux d'éclosion"
La signification de chacun est la suivante
Number of users to simulate:Combien de clients créer(Synonyme du nombre de requêtes envoyées par seconde au maximum)
Hatch rate:Vitesse de création du client(Chaque seconde)
Host:Point de terminaison de destination
Cette fois, envoyez une requête à http: // localhost: 3000
, en augmentant de 1 client chaque seconde.
À ce moment, le nombre maximum de clients sera porté à 100.
Exécuter sous la condition
Après la saisie, appuyez sur le bouton "Démarrer l'essaimage" pour exécuter la demande
Si vous souhaitez terminer l'exécution, appuyez sur le bouton STOP en haut à droite du navigateur Après avoir appuyé sur, STATUS devient STOPPED et vous pouvez confirmer qu'il est terminé.
L'illustration est une horde de batta et de sauterelles
Vous pouvez également voir les métriques dans l'onglet Graphiques Il s'agit d'une mesure lorsque vous augmentez d'un client par seconde, et si vous augmentez jusqu'à 100 clients, continuez à demander avec 100 clients tel quel
Ensuite, voyons ce qui se passe lorsque la demande échoue. Cette fois, je vais essayer d'arrêter le processus du serveur API au milieu
Vous pouvez vérifier comme ça sur chaque onglet Comment augmenter le nombre de demandes ayant échoué et le ratio d'échecs par rapport au nombre total de demandes Vous pouvez également vérifier pourquoi il a échoué dans l'onglet Échecs.Vous pouvez également télécharger les résultats à partir de l'onglet Données de téléchargement.
Le contenu du fichier téléchargé est comme ceci
L'illustration est un personnage de Bata
Comme mentionné ci-dessus, nous avons introduit Locust, bien qu'il n'ait que des fonctions de base. Adieu l'illustration du frappeur Merci de rester avec nous jusqu'à la fin
https://qiita.com/yamionp/items/17ffcc465272ad83c490 https://inside.pixiv.blog/east/5407 https://blog.htmlhifive.com/2015/08/14/web-server-load-testing-tools-2-locust/ https://docs.locust.io/en/stable/installation.html https://docs.locust.io/en/stable/quickstart.html https://co3k.org/blog/load-test-by-locust
Recommended Posts