我需要测试 10 亿(是的,字母为“B”)页的响应代码。我完全清楚,无论我如何扭曲它,这都需要很多天才能完成。我有时间。
但是,我目前的脚本似乎每秒只能执行约 200 次。这还不够快。按照这个速度,需要 2 个月。
mycurl() {
response=$(curl --write-out %{http_code} --silent --output /dev/null http://www.example.com/test/$1)
echo "$1"
if [ "$response" == "200" ]; then
echo "valid" > "enum/$1" | cat
fi
}
export -f mycurl
i=0
seq 1000000000 | parallel -j0 mycurl
我感觉parallel
它没有像预期的那样快(即等待某事)。
我已经发现了这一点,但不确定如何让它发挥作用:https://www.gnu.org/software/parallel/sem.html
我该如何优化我的脚本?
答案1
使用--head
(或-I
) 仅获取标题,而不是标题和网页内容。根据网页的大小,这可能会减少网络流量。
您已经指定要丢弃输出,因此将其写入文件不会浪费时间。因此,这只会在服务器端和网络上减少。服务器实际上不会通过网络发送页面,但它仍可能生成页面,或从缓存中检索页面。