alekciy
@alekciy
Вёбных дел мастер

Безголовый браузер работающий быстро и стабильно. Возможно?

Хочется обменяться опытом использования безголовых браузеров на сервере. В итоге хочется узнать, есть ли работающий быстро, не требующий много ресурсов и постоянно не падающий.

В своей работы использую PhantomJS через webdriver. Для парсинга используются XPath. Как полная эмуляция браузера на сервере с возможностью управления он всем хорош. Но есть и проблемы. Требует много ОЗУ (а), течет (б). На старте уходит где-то 300МБ, в процессе работы стабилизуется в районе 500МБ, без перезагрузки каждых 2-3 часа доходит до 1-5 ГБ. Когда их нужно запустить несколько десятков, то требует отдельной хороший железки. Даже если хватает ОЗУ, начинает активно использовать ЦПУ (в). Причем зачастую на него ни какие задания уже не идут, но что-то внутри у него активно крутиться. Еще часто соединения к нему по webdrive тупо виснут вылетаю потом по таймауту (г). Долго работает над, казалось бы, простыми задачами (д). К примеру, распарсить таблицу в сотню строк. Уходит больше минуты. Опросив коллег и гугл вижу, что подобные проблемы с ним у всех.

1) Есть ли способ оптимизировать работу с ним?
Пока думаю в строну отказа от webdrive, написания JavaScript с задачами и подгрузки их в режиме когда PhantonJS работает в роли сервера. Есть у кого-то есть опыт подобного использования подскажите, поможет ли.
Как вариант JS-а на стороне PhantomJS смотрел в сторону CasperJS, но руки протестировать не дошли. Учитывая на чем он базируется подозреваю, что проблемы с ЦПУ (а) и ОЗУ (в) он не решит, хотя если это решит проблему скорости парсинга (д), то будет уже неплохо.

2) Какое другое ПО есть для задачи "браузер на сервере"?
а) Знаю о проекте SlimerJS который строиться на базе Gecko. Но это попытка догнать PhantomJS на платформе от Mozilla. Т.е. по функционалу они отстают по определению. Кто использовал, отпишитесь о впечатлениях.

б) Еще вариант который использовал, это Selenium Standalone Server который запускает FireFox. Но связка не очень удобная в контексте использоваться проксей. Десяток запущенных полноценных FireFox, десяток профилей под каждую прокси, необходимость в Xvfb делается схему довольно громозкой и такой же прожорливой.

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

Войдите, чтобы написать ответ

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