使 curl 并行请求更快

使 curl 并行请求更快

我需要测试 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) 仅获取标题,而不是标题和网页内容。根据网页的大小,这可能会减少网络流量。

您已经指定要丢弃输出,因此将其写入文件不会浪费时间。因此,这只会在服务器端和网络上减少。服务器实际上不会通过网络发送页面,但它仍可能生成页面,或从缓存中检索页面。

相关内容