J'ai un service que j'appelle d'une autre application. Ci-dessous est mon URL de service que j'appelle -
http://www.betaservice.domain.Host.com/web/hasChanged?ver=0
Je dois faire un test de charge sur mon URL de service ci-dessus à la manière multithraled au lieu d'appeler séquentiellement une par une.
Y a-t-il une façon de Bash Shell Script, je peux mettre une charge sur mon URL de service ci-dessus en l'appelant à la manière multithreadée? Je peux avoir 60-70 threads appelant au-dessus de l'URL en parallèle très rapide si possible?
Je n'appellerais pas cela multithreading en tant que tel, mais vous pourriez simplement lancer 70 emplois en arrière-plan:
for i in {1..70}; do
wget http://www.betaservice.domain.Host.com/web/hasChanged?ver=0 2>/dev/null &
done
Cela entraînera 70 wget
processus fonctionnant à la fois. Vous pouvez également faire quelque chose de plus sophistiqué comme ce petit script:
#!/usr/bin/env bash
## The time (in minutes) the script will run for. Change 10
## to whatever you want.
end=$(date -d "10 minutes" +%s);
## Run until the desired time has passed.
while [ $(date +%s) -lt "$end" ]; do
## Launch a new wget process if there are
## less than 70 running. This assumes there
## are no other active wget processes.
if [ $(pgrep -c wget) -lt 70 ]; then
wget http://www.betaservice.domain.Host.com/web/hasChanged?ver=0 2>/dev/null &
fi
done
Essayez ab, vous obtenez une belle statistique aussi:
ab -n 10000 -c 70 http://www.betaservice.domain.Host.com/web/hasChanged?ver=0
Cet appel fera 10000 demandes avec une concurrence de 70 requêtes parallèles.
Vous pouvez essayer d'installer GNU parallel. Vous pouvez obtenir quelques-uns GNU exemples parallèles à partir de ici .
Test
J'ai installé gnu-parallel
de la source dans ma machine et je pourrais le faire fonctionner.
Vous pouvez l'installer à partir de la source de ici . J'ai un système redhat et j'ai donc téléchargé le paquet Fedora, puis a dirigé le .configure
, make
et make install
Pour obtenir le parallel
installé dans mon système.
Maintenant, après l'installation réussie, j'ai créé un répertoire checking
et dirigé la commande ci-dessous.
seq 10 | parallel -n0 wget http://www.betaservice.domain.Host.com/web/hasChanged?ver=0
Comme prévu, la commande ci-dessus m'a téléchargé 10 copies de la page Web. Vous pouvez définir le numéro que vous souhaitez avec seq
.
Pour plus d'informations sur la manière d'exécuter la même commande en parallèle, vous pouvez vérifier les exemples fournis par GNU-parallèle de ici . De l'exemple page,
Si vous souhaitez exécuter la même commande avec les mêmes arguments 10 fois parallèlement, vous pouvez faire:
sEQ 10 | parallèle -n0 my_command my_args
[~ # ~] Edit [~ # ~ #]
Maintenant, pour tirer parti de l'exécution parallel
, vous pouvez utiliser la commande comme,
seq 70 | parallel -j70 wget http://www.betaservice.domain.Host.com/web/hasChanged?ver=0
Les -j
L'option est quelque chose qui pourrait spécifier les travaux totaux pouvant être exécutés en parallèle basé sur le total des cœurs de la CPU.