Performance de machine pour faire les tirs

12 views
Skip to first unread message

Houssem Letaief

unread,
Oct 25, 2021, 3:32:07 PM10/25/21
to JMeter en français
Bonjour à tous, 

je viens vers vous pour la recherche d'une information SVp?

je vais faires des tirs qui peuvent arrivé jusqu'a 300 000 requetes sur un Webservices

d'apres vous experiences et vos connaissences, quel sont les performances d'une machine qui soit capable de faire ce travail?
comment je peux choisir la ou les machines??

Merci a vous tous

Jean-Marie Markowski

unread,
Oct 26, 2021, 4:20:45 PM10/26/21
to JMeter en français
Cela dépend de ce que tu penses de " 300 000 requetes sur un Webservices"
En combien de temps tu dois exécuter ces requetes ?
Il faudrait aussi comparer par rapport à la réalité 

houssem

unread,
Oct 26, 2021, 4:37:55 PM10/26/21
to jmet...@googlegroups.com
Merci pour votre réponse, 
oui en faite je veux simuler le double du chargé réel 
d'après nos sands en Prod  en est à 150 000 appel/heur dans les périodes de pic
de coup moi je veux doublé la charge.
-le script jmx est très simple 
-un fichier de jeux de données CSV 
-un écouteur backend pour envoyer les métriques sur influx db


voila 
cordialement





--
Vous recevez ce message, car vous êtes abonné à un sujet dans le groupe Google Groupes "JMeter en français".
Pour vous désabonner de ce sujet, visitez le site https://groups.google.com/d/topic/jmeter-fr/Fg6s5x7dETk/unsubscribe.
Pour vous désabonner de ce groupe et de tous ses sujets, envoyez un e-mail à l'adresse jmeter-fr+...@googlegroups.com.
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/jmeter-fr/5b023735-bf16-49b0-a846-9408b93705cdn%40googlegroups.com.

Vincent Daburon

unread,
Oct 28, 2021, 12:12:25 PM10/28/21
to JMeter en français
Bonjour,
300 000 appels/heure = 83 appels/sec c'est beaucoup mais pas non plus enorme.

1) Il faut que le JMeter et la machine qui héberge l'application à tester soit à proximité réseau (même salle machine) sinon il y a un gros risque d'être limité par le reseau.
2) Je pense qu'avec le keep alive activé c'est plus facile surtout si l'appel est en https.
3) Il y a un paramètre dans JMeter pour fermer le connexion en cas de nouvelle itération (cf https://abstracta.us/blog/performance-testing/difference-between-jmeter4-jmeter5/) et mettre paramètre : httpclient.reset_state_on_thread_group_iteration = false
4) Sur la machine avec JMeter il faut pour les environnements Linux changer les ulimits pour le compte qui fait tourner JMeter en particulier augmenter le nb nofiles à 16384 et aussi le noproc à 16384.
5) Tu peux ajouter un attente dynamique pour simuler un pacing de 1sec ou 2sec (le pacing est le temps minimum avant de faire une autre itération) par exemple un appel fait 1,2 sec alors l'attente dynamique sera de 0,8 sec pour un pacing à 2sec.
Pour faire du pacing, il faut stocker dans une variable le temps du debut de l'itération (ex en groovy vars.put("V_PACING_START_ITER_MILLISEC","" + System.currentTimeMillis()); puis après les différents appels (en fin du script) il faut calculer le temps restant pour atteindre le pacing (ex :

long lPacingIterationMilli= 2000; // pacing a 2sec
String sPACING_START_ITER_MILLISEC = vars.get("V_PACING_START_ITER_MILLISEC");
long lStartIter = Long.parseLong(sPACING_START_ITER_MILLISEC);

long lCurrentTime = System.currentTimeMillis();
long lDurationIter = lCurrentTime - lStartIter;

long lWaitPacing = lPacingIterationMilli - lDurationIter;

if (lWaitPacing <= 0) {
    lWaitPacing = 0;
}
vars.put("V_PACING_ITER_WAIT", "" + lWaitPacing);
et ajouter un Flow Control Action avec la pause : ${V_PACING_ITER_WAIT}

6) Si un thread fait les appels en 2 sec (pacing) alors le thread fait 30 itération/min ou 1800 itérations/h.
Pour atteindre les 300 000/h, il faut 300 000/1800 = 166,66 threads, on arrondi à 170 threads.
Autre exemple, le pacing est de 30 sec, un thread fait 2 itérations/min ou 120 itérations/h pour faire les 300 000 appels/h, il faut 300 000/120 = 2500 threads. Je pense qu'il faut mieux être entre 1000 et 3000 threads maxi par instance de JMeter si tu dépasses les 3000 threads, il faut surement 2 injecteurs JMeter avece un test de performance distribué.

7) Plutôt qu'un backendlistener InfluxDB, j'écrirai directement dans un fichier csv. Si tu prends un backendlistener, il ne faut pas prendre le Raw mais InfluxDBBackendListenerClient qui fait des moyennes sur quelques secondes (je ne me rappelle plus sur quelle durée se fait la moyenne). Le risque est de saturé InfluxDB ou bien d'utiliser pas mal de bande passante pour envoyer les résultats à InfluxDB.

Cordialement
VIncent DAB.

Jean-Marie Markowski

unread,
Oct 28, 2021, 2:10:28 PM10/28/21
to jmet...@googlegroups.com
Vu la quantité de requêtes, j'utiliserais directement un serveur dédié.
un double CPU et 32GB avec InfluxDB et grafana dessus pour réduire le flux sur le réseau, j'utilise un tel système pour mes tests  avec des débits similaires
Un débit 20/sec serait déjà une bonne approche pour commencer.





Reply all
Reply to author
Forward
0 new messages