Je fais des tests de charge et des évaluations de performances avec JMeter, mais comme il est difficile d'ouvrir le fichier jtl de sortie en mode GUI de JMeter un par un, je le calculerai avec des pandas.
python 2.7.11 JMeter 3.1
Exécutez JMeter en mode commande comme indiqué ci-dessous pour obtenir le fichier jtl (format csv).
jmeter.bat -n -t test.jmx -l result.jtl
Avec le format csv, c'est facile car il peut être converti au format DataFrame en une seule ligne.
import pandas as pd
#Lire le fichier jtl
df = pd.read_csv(jtl_file_name)
#Extraction de la colonne cible(Ici, heure de début et temps écoulé)
df = df.loc[:, ['timeStamp', 'elapsed']]
#Nombre total de threads
cnt = len(df.index)
#valeur minimum
min = df['elapsed'].min()
#Valeur maximum
max = df['elapsed'].max()
#Valeur moyenne
avg = df['elapsed'].mean()
#écart-type
std = df['elapsed'].std(ddof=False)
Divisez le nombre total de threads par le temps nécessaire à l'ensemble du processus. J'ai évoqué ce qui suit. https://jmeter.apache.org/usermanual/glossary.html
#Ajoutez l'heure de début et le temps écoulé de chaque thread et ajoutez-les en tant que nouvelle colonne pour obtenir l'heure de fin.
df['end_time'] = df['timeStamp'] + df['elapsed']
#Obtenez l'heure de début minimale
start = df['timeStamp'].min()
#Obtenez l'heure de fin maximale
end = df['end_time'].max()
#Divisez le nombre total de threads par le temps nécessaire à l'ensemble du processus. Multipliez 1000 pour le nombre de secondes.
tp = float(cnt)*1000.0/(end - start)
pandas pratique. Je pense qu'il est possible de collecter des statistiques pour chaque processus par groupe par, mais cette fois ce n'est pas nécessaire, donc je ne le ferai pas. Comme le traitement est lent pendant un moment, je pense que c'est un peu exagéré pour ce que je veux faire, mais compte tenu du degré de liberté et d'extensibilité, le mérite est grand.
Recommended Posts