2016-05-09 8 views
1

Ich habe einen Deployment-Prozess für eine große Anzahl von Apis.Wie teilen Sie einen großen Prozess zwischen Threads

werde ich Liste des apis erhalten, indem ein restservice Abfrage, die

{ "count" : 10000 ,[ {api_id:"1" , api_name:"xyz"},{api_id:"2",api_name:"abc"},....,{api_id:"999",api_name:"uuf"}]} 

für jede api id json Antwort zurückgibt Ich brauche gemeinsames undeploy auszuführen ..

jetzt mit Single-Thread dieses Loch Prozess lange dauern.

Ich möchte die Threads erhöhen, damit die Bearbeitungszeit reduziert wird.

Derzeit wird meine Thread-Gruppe unter click to see Image angezeigt, die den Prozess wie erwartet ausführen, aber ich möchte diese große Aufgabe unter Threads teilen, wenn Thread-1 die Bereitstellung von api_id 3 und dann Thread-2 nicht deimplementieren sollte same api_id 3. Da alle Threads versuchen, auf dieselben Daten zuzugreifen und denselben Prozess zu versuchen, erhalte ich Fehler.

Jetzt suche ich nach einer Lösung, die nicht übergeordnete Probleme hat und den Prozess teilen möchte.

Ich dachte an die gemeinsame Nutzung unter Threads wie (1000/no of threads = chunck) und dann für jeden Thread Start Index ist 0 bis Chunck, Chunk + 1 bis 2 * Chunck ... etc, aber ich bin mir unsicher über die Implementierung.

Danke.

Antwort

1

Gegeben Sie Ihre API-ID (oder den Namen) extrahiert haben, und Sie haben 1000 Variablen wie:

api_name_1=xyz 
api_name_2=abc 
api_name_3=uuf 

Sie haben soeben __counter() Funktion, die jedes Mal erhöht verwenden können es also egal, genannt werden, wie viele Threads Sie haben Jeder Thread jeder Iteration wird die nächste API aufnehmen, um die Deimplementierung durchzuführen. Siehe die nächsten API-Namen wie:

${__V(api_name_${__counter(FALSE,)})} 

Counter functions

Siehe How to Use a Counter in a JMeter Test Artikel für weitere Informationen über die verschiedenen JMeter Zählertypen und Anweisungen, wie sie verwenden.

Verwandte Themen