私は何千もの走っています。カールNext bashスクリプトの並列バックグラウンドプロセス
START=$(date +%s)
for i in {1..100000}
do
curl -s "http://some_url_here/"$i > $i.txt&
END=$(date +%s)
DIFF=$(( $END - $START ))
echo "It took $DIFF seconds"
done
49Gb Corei7-920専用サーバー(非仮想)があります。
命令によるメモリ消費とCPUの追跡にtop
制限はありません。
ps aux | grep curl | wc -l
現在の数量を計算するために使用します。カールプロセス。この数は2〜4,000人に急速に増加し、続いて減少し始めました。
カールパイピングを介してawk()にcurl | awk > output
簡単な解析を追加すると、カールプロセスの数が1〜2000に増加し、次に20〜30に減少します。
プロセス数が大幅に減ったのはなぜですか?このアーキテクチャの境界はどこにありますか?
ベストアンサー1
次の質問に厳密に従います。
mycurl() {
START=$(date +%s)
curl -s "http://some_url_here/"$1 > $1.txt
END=$(date +%s)
DIFF=$(( $END - $START ))
echo "It took $DIFF seconds"
}
export -f mycurl
seq 100000 | parallel -j0 mycurl
その時間に定型句のテキストが必要ない場合は、短くします。
seq 100000 | parallel -j0 --joblog log curl -s http://some_url_here/{} ">" {}.txt
cut -f 4 log
1000秒間並行して実行するには、いくつかの制限事項(ファイルハンドルなど)に直面します。 ulimit -n または /etc/security/limits.conf を増やすと便利です。