Faça solicitações curl paralelas mais rápido

4

Eu preciso testar o código de resposta de 1 bilhão (sim com um "B") páginas. Eu estou perfeitamente ciente de que não importa o quanto eu torça, levarei muitos dias para fazer isso. Eu tenho tempo.

No entanto, meu script atual parece fazer apenas ~ 200 por segundo. Isso não é rápido o suficiente. Nesse ritmo, levará 2 meses.

mycurl() {
    response=$(curl --write-out %{http_code} --silent --output /dev/null http://www.example.com/test/)
    echo ""
    if [ "$response" == "200" ]; then
        echo "valid" > "enum/" | cat
    fi
}
export -f mycurl

i=0

seq 1000000000 | parallel -j0 mycurl

Tenho a sensação de que parallel não está indo tão rápido quanto poderia (ou seja, esperando por algo).

Encontrei isso, mas não tenho certeza sobre como fazer isso funcionar: link

Como posso otimizar meu script?

    
por Slava Knyazev 26.05.2017 / 19:03

1 resposta

2

Use --head (ou -I ) para buscar apenas os cabeçalhos, em vez dos cabeçalhos mais o conteúdo da página da web. Dependendo do tamanho das páginas da web, isso pode reduzir o tráfego da rede.

Você já especificou que a saída deve ser descartada, portanto não é perdido tempo gravando-a em um arquivo. Portanto, a única redução que isso dará é no lado do servidor e na rede. Na verdade, o servidor não enviará a página pela rede, mas ainda poderá gerá-la ou recuperá-la do cache.

    
por Jos 26.05.2017 / 22:11