他のアプリケーションから呼び出されるサービスがあります。以下は私が呼び出すサービスURLです。
http://www.betaservice.domain.host.com/web/hasChanged?ver=0
上記のサービスURLを順番に1つずつ呼び出すのではなく、マルチスレッド方式でロードテストを実行する必要があります。
bashシェルスクリプトがマルチスレッド方式で呼び出して上記のサービスURLをロードする方法はありますか?可能であれば、上記のURLを非常に迅速に並列に呼び出す60〜70のスレッドを持つことはできますか?
ベストアンサー1
マルチスレッドとは呼ばれませんが、単にバックグラウンドで70の作業を始めることができます。
for i in {1..70}; do
wget http://www.betaservice.domain.host.com/web/hasChanged?ver=0 2>/dev/null &
done
これにより、70個のプロセスが同時に実行されますwget
。次のような小さなスクリプトなど、より複雑なタスクを実行することもできます。
#!/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