Перейти к содержимому

Фотография

Selenium ест 1 гиг памяти и вылетает

python selenium memory память

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 huckleberrys

huckleberrys

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Элис Полански

Отправлено 27 февраля 2014 - 18:38

Есть скрипт работающий с яндекс картами - работает около получаса, начинает юзать очень много памяти и прекращает работу с такой вот ошибкой. изображения отключены, предполагаю что из-за большого "веса" страниц яндекс карт. 

 

1393424038-clip-28kb.png?nocache=1


  • 0

#2 huckleberrys

huckleberrys

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Элис Полански

Отправлено 27 февраля 2014 - 18:59

чистка кук и обновление страницы не помогает,  ghostdriver.log выдаёт 300 строк такого содержания

[ERROR - 2014-02-27T20:11:45.709Z] WebElementLocator - _handleLocateCommand - Element(s) NOT Found: GAVE UP. Search Stop Time: 1393531905658


  • 0

#3 neman

neman

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • ФИО:Антон


Отправлено 27 февраля 2014 - 19:49

Скорее всего это утечка памяти в фантоме - https://github.com/a...js/issues/11390.

Возможные варианты обхода:

  • Уменьшить количество экземпляров используемых страниц (объектов WebPage).
  • Вручную высвобождать память (для этого придется использовать нативный API phantomjs). Ghostdriver позволяет выполнять phantom скрипты.
  • Перезапускать phantomjs во время выполнения.

Должен сказать, что у меня в некоторых тестах фантом выжирал гиг и падал минут через 5, на самом обычном сайте - из-за не очень аккуратной работы с инстансами страниц, которые создавались на каждый чих. Комбинация пунктов 1 и 3 помогла.


  • 0

#4 huckleberrys

huckleberrys

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Элис Полански

Отправлено 27 февраля 2014 - 20:29

Скорее всего это утечка памяти в фантоме - https://github.com/a...js/issues/11390.

Возможные варианты обхода:

  • Уменьшить количество экземпляров используемых страниц (объектов WebPage).
  • Вручную высвобождать память (для этого придется использовать нативный API phantomjs). Ghostdriver позволяет выполнять phantom скрипты.
  • Перезапускать phantomjs во время выполнения.

Должен сказать, что у меня в некоторых тестах фантом выжирал гиг и падал минут через 5, на самом обычном сайте - из-за не очень аккуратной работы с инстансами страниц, которые создавались на каждый чих. Комбинация пунктов 1 и 3 помогла.

а каким образом я могу уменьшить количество экземпляров используемых страниц? 


  • 0

#5 neman

neman

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • ФИО:Антон


Отправлено 28 февраля 2014 - 06:48

Ответ - точно не знаю :). Через ghostdriver нельзя явно управлять созданием объектов WebPage, а в каком случае он использует старую/создает новую - это надо долго копаться в исходниках. Я использую гем PageObject, и опытным путем выяснил, что на создание каждого объекта PageObject ghostdriver инициализирует новую страницу. Если используете какую-то обертку, попробуйте это проверить.


  • 0

#6 leipreachan

leipreachan

    Активный участник

  • Members
  • PipPip
  • 95 сообщений
  • Город:Москва

Отправлено 28 февраля 2014 - 09:18

Фантом, всё-таки, не очень стабильная штука. Попробуйте на обычном хроме гонять. Чуть больше накладные расходы, но есть мнение, что там с памятью лучше


  • 0



Темы с аналогичным тегами python, selenium, memory, память

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных