8

Запуск скрипта с Cygwin на Windows XP с двухъядерным процессором и 4 Гбайт памяти

cat url_list.txt | xargs -P50 wget -i

Я пытаюсь перебрать 4 ГБ URL для загрузки (около 43 миллионов)

Работает нормально примерно в течение первого часа, затем оболочка Bash и загрузка останавливаются, хотя ее всего 2% в списке URL.

Есть идеи, что может быть не так?

Каков наилучший способ отладки, почему это прекращается через час?

2 ответа2

2

Возможно, wget требует времени для загрузки некоторых файлов. Есть ли какие-либо процессы wget/xargs в памяти в течение периода, когда он кажется зависшим? Если да, то это полные 50 процессов, которые вы выделили с помощью флага -P50 для xargs, или он каким-то образом заполз на это число или меньше этого числа, и новые экземпляры не создаются должным образом? Хотя он запускается под Cygwin, взгляните на список процессов в самих окнах, поскольку каждая загрузка wget должна запускать экземпляр в диспетчере задач.

0

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

Чтобы увидеть, так ли это, попробуйте убить один из висячих виджетов и посмотреть, отклеится ли тот.

Чтобы пропустить зависшие URL-адреса, вы можете задать wget тайм-аут:

wget -T 60

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .