Мені потрібно завантажувати багато невеликих сторінок якомога швидше. Середній розмір для однієї сторінки - 3 кб. Є мільйони сторінок. Спочатку я спробував, curl
але це було занадто повільно, ймовірно, тому, що він чекав, коли сервер відповість на запит, а потім виконати той же процес для наступної сторінки.
curl -O "http://website.com/pages/[0000001-1000000].html"
Редагувати: Після деяких тестів я помітив ці результати. Я завжди відкритий до більшої кількості пропозицій. Я хотів би ще більше підвищити швидкість.
Порівняння 1: (dns проти no dns)
повільніше:
curl -O "http://website.com/pages/[1-1000].html" -s -S
швидше:
curl -O "http://90.111.123.222/pages/[1-1000].html" -s -S
Під час завантаження безлічі невеликих сторінок затримка dns є критичною.
Порівняння 2: (використовуючи послідовність згортання проти "seq")
повільніше:
curl -O "http://90.111.123.222/pages/{1}.html" -s -S ::: $(seq 1 1000)
швидше:
curl -O "http://90.111.123.222/pages/[1-1000].html" -s -S
Порівняння 3: (паралельне виконання)
повільніше:
time parallel -j 5 curl -O \'"http://90.111.123.222/pages/{1}.html"\'
-S -s ::: $(seq 1 1000)
швидше:
( time curl -O "http://90.111.123.222/pages/[1-200].html" -s -S &
time curl -O "http://90.111.123.222/pages/[201-400].html" -s -S &
time curl -O "http://90.111.123.222/pages/[401-600].html" -s -S &
time curl -O "http://90.111.123.222/pages/[601-800].html" -s -S &
time curl -O "http://90.111.123.222/pages/[801-1000].html" -s -S & )
Btw, очевидно, що запущено більше екземплярів, до певного моменту покращить швидкість обох методів.