Использование webkit для автономного просмотра

Я использую инструменты на основе webkit для создания безголового браузера для сканирования веб-страниц (. Мне это нужно, потому что я хотел бы оценить javascript, найденный на страницах, и получить окончательную отображаемую страницу ). Но две разные системы, которые я реализовал до сих пор, демонстрируют очень низкую производительность. Я реализовал две разные системы, обе из которых используют webkit в качестве серверной части :

  1. . Используя Google Chrome :я запускал Google Chrome и связывался с каждой вкладкой, используя веб-сокеты, предоставляемые Chrome для удаленной отладки (. отладка по проводам). Таким образом, я могу управлять каждой вкладкой, загружать новую страницу, и после загрузки страницы я получаю DOM загруженной веб-страницы.
  2. Использование фантомов:phantomjs использует webkit для загрузки страниц и предоставляет возможность безголового просмотра. Как объяснено в примерах phantomjs, я использую page.open для открытия нового URL-адреса, а затем извлекаю dom после загрузки страницы, оценивая javascript на странице.

Моя цель — сканировать страницы как можно быстрее, и если страница не загружается в течение первых 10 секунд, объявить об ошибке и двигаться дальше. Я понимаю, что для загрузки каждой страницы требуется некоторое время, поэтому, чтобы увеличить количество страниц, которые я загружаю в секунду, я открываю много вкладок в Chrome или запускаю несколько параллельных процессов с использованием phantomjs. Ниже приведена производительность, которую я наблюдаю:

  1. Если я открою более 20 вкладок в экземплярах Chrome / 20 phantomjs, загрузка ЦП резко возрастет.
  2. Из-за высокой загрузки ЦП загрузка многих страниц занимает более 10 секунд, поэтому частота сбоев у меня выше (~80 % запросов на загрузку страниц не выполняются)
  3. Если я намерен удерживать количество сбоев менее 5% от общего числа запросов, я не могу загружать более 1 URL-адреса в секунду.

После опробования обеих систем, основанных на webkit, кажется, что узким местом в производительности является механизм рендеринга webkit, и поэтому я хотел бы узнать от других пользователей, сколько URL-адресов в секунду я могу сканировать. Моя аппаратная конфигурация:

  1. Процессор :Intel® Core™ i7 -2635QM (1 процессор, 4 ядра)
  2. Видеокарта :AMD Radeon HD 6490M (256 МБ)
  3. Память :4 ГБ
  4. Пропускная способность сети достаточно хороша, чтобы иметь возможность загружать страницы больше, чем производительность, которую я наблюдаю

Вопрос, который я пытаюсь задать этому списку рассылки, заключается в том, есть ли у кого-нибудь опыт использования webkit для сканирования веб-страниц для случайного набора URL-адресов (, например, выбор 10 000 URL-адресов из потока Twitter ), сколько URL-адресов я могу разумно ожидать? ползать в секунду?

Спасибо

13
задан Md Sami 11 July 2012 в 20:44
поделиться