LINUX.ORG.RU

Странные дела.

 , , ,


1

1

Добрый день. Я написал небольшой «бенчмарк» для своего сервера, который непрекращаясь запускает firefox, и заходит на одну страницу. Всё идёт хорошо, до 248-249 firefox, после этого скрипт падает, и пишет:

Traceback (most recent call last):
  File "./benchmark.py", line 10, in <module>
    browser = webdriver.Firefox()
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 59, in __init__
    self.binary, timeout),
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/firefox/extension_connection.py", line 47, in __init__
    self.binary.launch_browser(self.profile)
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 66, in launch_browser
    self._wait_until_connectable()
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 100, in _wait_until_connectable
   raise WebDriverException("The browser appears to have exited "
selenium.common.exceptions.WebDriverException: Message: The browser appears to have exited before we could connect. If you specified a log_file in the Firefox Binary constructor, check it for details.


Вот код «бенчмарка»:

#!/usr/bin/env python2.7
# coding=utf-8
from pyvirtualdisplay import Display
from termcolor import colored
from selenium import webdriver
count = 0
display = Display(visible=0, size=(1280, 1024))
display.start()
while count < 255:
	browser = webdriver.Firefox()
	browser.get('https://yandex.ru')
	print browser.title
	browser.find_element_by_link_text('tab-slovari').click()
	print colored('click', 'yellow')
	print 'start '+colored(str(count), 'red')+' browser'
	count=count+1
display.stop()

print colored(' ((( *** COMPLETED *** )))  ', 'cyan')
На сервере 32 гигабайта памяти, и около 20-25 гигабайт свапа в zram(на всякий случай). Под конец работы программы получается следующий вывод free:
             total       used       free     shared    buffers     cached
Mem:      32915892   31199984    1715908     106408      50680     326192
-/+ buffers/cache:   30823112    2092780
Swap:     26212340    7634732   18577608
То есть память ещё есть, а ООМ-killer никого не прихлопывал. Подумал, что запустил близкое к лимиту количество процессов браузера, но нет, процессов всего 321 в системе, а потоков 7025. Всё это дело крутится в lxc.

Кто может подсказать, в чём может быть дело? Возможно какие-то ограничения xvfb? Пробовал запускать под vnc - та же беда.

Лог, о котором пишет selenium webdriver, сейчас попробую найти.

Ответ на: комментарий от blablacon

Без перекомпиляции иксов никак не обойтись. Но есть шанс, что и она не поможет — там ещё несколько ограничений есть.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Да, кажется в этом было дело. Ну ладно, просто буду запускать на разных DISPLAY.

Вот ещё правда сейчас провёл эксперимент. Настроил 486-Gentoo, поставил там firefox-bin, и все необходимые модули для этого «бенчмарка». Сначала создался один виртуальный буфер, прогнало 240 Firefox, потом создался другой, и новые стали появляться на нём. Но скрипт упал на 190 копии Лисы. Память ещё была, место на дисках тоже. :) Странно всё это.

blablacon ()
Ответ на: комментарий от i-rinat

Не за чем, я просто проверяю, сколько влезет. :) Проверял, и вот на такое наткнулся.

blablacon ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.