Selenium Grid WebDriver возвращает тайм-аут шлюза 504, ожидая масштабирования сетки

В настоящее время у меня есть Selenium Grid, работающий на AWS Fargate, который автоматически масштабируется на основе желаемых сеансов в хабе. У меня есть служба, которая выполняет задачу концентратора, и службу для задач узла. В настоящее время я использую подход «один сеанс на узел» из-за необходимых ресурсов и того факта, что общая скорость выполнения не является основной целью этого набора тестов. Я также всегда поддерживаю хотя бы один узел в рабочем состоянии.

Фактическое автомасштабирование будет работать; концентратор видит, что ему нужно больше узлов, и масштабирует обслуживание узлов до необходимого масштаба. Хаб будет удерживать сеанс до тех пор, пока узел не станет доступным, и правильно разместит его там, когда он будет.

Тесты работают отлично, если я запускаю по одному, но проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь запустить группу параллельно и мне нужно масштабировать сетку, я получаю тайм-аут 504 Gateway. через 30 секунд после вызова WebDriver. Я пытался изменить все возможные настройки, чтобы увеличить время ожидания, но безрезультатно.

Конфигурация моего хаба выглядит так

browserTimeout : 0
debug : false
jettyMaxThreads : -1
host : XXXXXXXXX
port : 4444
role : hub
timeout : 180000
cleanUpCycle : 5000
maxSession : 5
hubConfig : /opt/selenium/config.json
capabilityMatcher : org.openqa.grid.internal.utils.DefaultCapabilityMatcher
newSessionWaitTimeout : -1
throwOnCapabilityNotPresent : true
registry : org.openqa.grid.internal.DefaultGridRegistry

Конфигурация узла выглядит так

browserTimeout: 0
debug: false
jettyMaxThreads: -1
host: XXXXXXXXX
port: 5555
role: node
timeout: 1800
cleanUpCycle: 5000
maxSession: 1
capabilities: Capabilities {applicationName: , browserName: chrome, maxInstances: 1, platform: LINUX, platformName: LINUX, seleniumProtocol: WebDriver, server:CONFIG_UUID: ..., version: 66.0.3359.170}
downPollingLimit: 2
hub: http://XXXXXXXXX:4444/grid/register
id: http://XXXXXXXXX:5555
nodePolling: 5000
nodeStatusCheckTimeout: 5000
proxy: org.openqa.grid.selenium.proxy.DefaultRemoteProxy
register: true
registerCycle: 5000
remoteHost: http://XXXXXXXXX:5555
unregisterIfStillDownAfter: 10000

Я вызываю свои тесты на селен через Jruby по определенным бизнес-причинам, и базовая конфигурация выглядит так:

co = Java::OrgOpenqaSeleniumChrome::ChromeOptions.new
co.add_arguments(["--disable-extensions"].to_java(:string))
co.add_arguments(["no-sandbox"].to_java(:string))
co.add_arguments("--headless")
chrome_prefs = {}
chrome_prefs["profile.default_content_settings.popups"] = 0.to_s
chrome_prefs["safebrowsing.enabled"] = "true"
co.set_experimental_option("prefs", chrome_prefs)
cap = Java::OrgOpenqaSeleniumRemote::DesiredCapabilities.chrome
cap.set_capability("Capability", co)

$grid_url = ENV['GRID_URL']
$driver = Java::OrgOpenqaSeleniumRemote::RemoteWebDriver.new(Java::JavaNet::URL.new($grid_url), cap) 
# Get timeout after the RemoteWebDriver.new call

Кто-нибудь знает, как изменить здесь тайм-аут?


person alexd3    schedule 13.06.2018    source источник


Ответы (1)


Это не имело абсолютно ничего общего с настройкой Selenium, поэтому, если кто-то еще столкнется с этим, особенно при использовании Fargate или ECS в целом, и вы запускаете Hub за балансировщиком нагрузки ...

Если вам довелось основать свою CloudFormation на примерах AWS Fargate, которые они есть на своем Github, действительно убедитесь, что вы изменили значение idle_timeout.timeout_seconds для балансировщика нагрузки.

person alexd3    schedule 14.06.2018
comment
Я бы всю жизнь заглядывал в Hub - ›Конфигурация тайм-аута сети. Спасибо x1000. - person Anthony Chuinard; 08.04.2020