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

Мне нужно проверить код ответа 1 миллиард (да с страницами «B»). Я прекрасно понимаю, что независимо от того, как я его перекручу, это займет много дней. У меня есть время.

Однако мой текущий скрипт, кажется, делает только 200 в секунду. Это недостаточно быстро.

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 происходит не так быстро, как могло бы (т. Е. Ждать чего-то).

I нашли это, но я не уверен, как заставить его работать: https://www.gnu.org/software/parallel/sem.html

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

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

2 ответа

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

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

2
ответ дан 18 July 2018 в 12:40

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

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

2
ответ дан 24 July 2018 в 20:00

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

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