La dernière fois, j'ai écrit sur les grandes lignes du test de charge, mais cette fois, j'écrirai sur le test de charge de l'API externe qui a été fait à ce moment-là. Cet article est tiré de l'article précédent [Connaissance du test de charge minimale obtenue dans le premier test de charge du serveur API], «Il s'agit d'un test de charge difficile. Il mérite l'item "Je frappe l'API d'un service externe".
Le serveur d'API créé cette fois frappe l'API du service externe à l'intérieur de l'API.
Cette fois, le sundbox de service externe n'existait pas, il n'a donc pas été possible d'effectuer directement un test de charge incluant le service externe. De plus, ce mécanisme a été configuré pour que le serveur externe s'authentifie à la première fois et que les autres API ne puissent être touchées qu'après la réussite de l'authentification, donc si un problème survient ici, un nouvel utilisateur peut le gérer. Il a joué un rôle si important qu'il a disparu.
Comme je l'ai dit au début, cette fois, l'environnement sundbox n'existait pas dans l'API du service externe, il n'était donc pas possible de se connecter directement au service externe lors du test de charge.
Par conséquent, nous avons préparé un serveur factice, et cette fois nous avons décidé d'effectuer un test de charge en nous connectant au serveur factice. Ensuite, comment tester avec un serveur factice, mais cette fois j'ai ajouté une seule fonction pratique au serveur factice, et en utilisant cette fonction, j'ai pu mesurer le degré d'influence du serveur externe.
Accepte la même requête qu'une API externe normale et renvoie le même type de réponse. ―― Tout d'abord, c'est naturel, mais la condition minimale est de se comporter de la même manière que l'API externe que vous utilisez réellement.
Vous pouvez spécifier le temps de réponse. ――C'est la fonction pratique utilisée cette fois. En ajustant le temps de réponse, il est possible de supposer certains modèles de performances du serveur externe et d'effectuer un test de charge.
Pour écrire un exemple, le temps de réponse peut être ajusté en fonction de la valeur de X-Sleep </ b> dans l'en-tête comme indiqué ci-dessous.
curl -d '{"user":"hoge"}' https://dummy-server.jp/test/api -H "Content-type: application/json" -H "X-Sleep: 2000"
Voici un exemple des résultats du test de charge.
Temps de réponse | RPS | l'utilisation du processeur |
---|---|---|
100ms | 230 | 90% |
200ms | 220 | 80% |
300ms | 200 | 75% |
400ms | 200 | 72% |
500ms | 190 | 65% |
600ms | 185 | 60% |
700ms | 175 | 60% |
800ms | 170 | 55% |
900ms | 155 | 50% |
1000ms | 140 | 45% |
1500ms | 110 | 30% |
2000ms | 85 | 20% |
3000ms | 60 | 15% |
D'après ce résultat, on peut voir que lorsque le temps de réponse dépasse 1000 ms, l'utilisation du processeur dépasse 50% et les performances se détériorent.
Le contenu dérivé de ce résultat est que si le temps de réponse moyen du serveur externe est d'environ 1000 ms ou plus, cela peut affecter le serveur API de l'entreprise. </ b>
――Lorsque vous entrez dans le service, vous pouvez mesurer le temps de réponse de l'API du serveur externe, et si le temps de réponse moyen est de 1000 ms ou plus, vous pouvez prendre des mesures telles que l'augmentation du nombre de serveurs et décider rapidement de maintenir les performances.
Cette fois, j'ai testé avec cette approche, mais je pense que je dois découvrir s'il existe une autre meilleure façon. Cependant, si vous avez des informations sous forme de numéro plutôt que de ne rien faire, vous vous sentirez plus en sécurité.
Recommended Posts