Выполните вихревые параллельные запросы быстрее

Я должен протестировать код ответа 1 миллиарда (да с "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

Как я могу оптимизировать свой сценарий?

4
задан 26 May 2017 в 20:03

1 ответ

Используйте --head (или -I) для выборки просто заголовков, а не заголовков плюс содержание веб-страницы. В зависимости от размера веб-страниц это может уменьшить сетевой трафик.

Вы уже указали, что вывод должен быть отброшен, таким образом, никакое время не потеряно, пишущий это в файл. Поэтому единственное сокращение, которое это даст, находится на стороне сервера и в сети. Сервер на самом деле не отправит страницу по сети, но это может все еще генерировать его или получить его от кэша.

1
ответ дан 1 December 2019 в 10:34

Другие вопросы по тегам:

Похожие вопросы: