Сессия Selenium Grid 4 не отражает

#selenium #amazon-ecs #selenium-grid #aws-fargate

Вопрос:

Я настроил селеновую сетку 4 в ECS fargate POC. Установка работает нормально и провела несколько тестов, но я столкнулся с проблемой с сеансами узлов. Я передаю переменную среды для увеличения сеанса, но изменения не отражаются в настройке fargate. Может ли кто-нибудь сообщить мне, в чем будет проблема?

Примечание: Я запустил ту же настройку на своем локальном компьютере (docker-compose), она работает так, как ожидалось на локальном компьютере.

=========== ОБНОВЛЕНО

Я приложил скриншоты целевой страницы selenium. У которого есть узел chrome с одним сеансом после передачи SE_NODE_MAX_SESSIONS=2. Журналы узла chrome. Запущенные задачи и сведения о задачах chrome.

запустить сетку? Сначала я запускаю службу ECS-концентратора gird, дождусь состояния запуска, а затем запускаю службу ECS chrome. Я попытался запустить вручную и использовать задачу выполнения для переопределения переменных среды.

сведения о процессоре и памяти? Как для концентратора сетки, так и для задачи Chrome я настроил 4 ГБ памяти и 2 процессора.

целевая страница
задачи ecs
хромированные детали
журналы chrome

Комментарии:

1. Я подхожу к этому с лучшим пониманием Fargate, чем Selenium, и с учетом этого мне неясно, чего вы ожидаете и что вы на самом деле видите (с точки зрения Fargate). Не хотите немного расшириться? Если только нет эксперта по Селену, который может решить эту проблему сразу.

2. @mreferre Я хочу увеличить максимальный сеанс узла для браузера. Это можно сделать с помощью переменной среды SE_NODE_MAX_SESSIONS=4. например: когда я установил это значение, я смог получить 4 сеанса chrome на своем локальном компьютере. В той же среде, которая использовалась в моем fargate, я получаю значение по умолчанию 1 сеанс.

3. И передаете ли вы переменную среды либо в определении задачи ECS, либо во время выполнения при запуске задачи?

4. @mreferre Я передал среду в определении задачи и во время выполнения. Я попробовал оба способа. Я обновил вопрос с более подробной информацией. Пожалуйста, изучите это и дайте мне знать, если я делаю что-то не так.

5. Интересный. Вы передаете переменную, и, по-видимому, она попадает в контейнер, потому что я вижу, как она плюется max-sessions=2 в журнал. Так что эта часть должна быть в порядке. Есть ли что-то еще, что нужно настроить, чтобы получить 2 сеанса, которые вы хотите? Возможно, эта переменная устанавливает потолок, но вам нужно сказать Селену, сколько вы на самом деле хотите где-то? Вы сказали, что та ЖЕ конфигурация отлично работает на prem, и вы автоматически получаете 2 сеанса? Извините, что просто устроил здесь мозговой штурм.

Ответ №1:

Я сталкиваюсь с той же проблемой. Я хотел, чтобы сеансы были установлены на 4, в то время как служба ECS имела 1vCPU. Это было невозможно настроить до последней версии selenium.

Команда Selenium выпустила исправление здесь.

Я попробовал это с переменными среды:

  • SE_NODE_MAX_SESSIONS=4
  • SE_NODE_OVERRIDE_MAX_SESSIONS=true

Локально это работает, но в ECS, хотя максимальное количество сеансов установлено 4 из того, что я вижу в журналах, я все еще вижу один доступный сеанс при проверке завитков.

Я мог бы подтвердить это, проверив состояние сетки:

 curl -X POST -H "Content-Type: application/json" --data '{"query": "{ grid { totalSlots, sessionCount } }"}' -s my-selenium-machine:4444/graphql
 

Для одного узла selenium у меня должно быть 4 слота, а у меня 1.
Смогли ли вы решить эту проблему? Работает ли это для вас в последней версии selenium?

Обновить

Я смог решить эту проблему с помощью добавления дополнительной переменной среды:

  • JAVA_OPTS=-XX:Количество активных процессоров=4

Ответ №2:

Я решил эту проблему, сославшись на этот вопрос на Github: https://github.com/SeleniumHQ/selenium/issues/8974, вы также должны установить активные процессоры, помимо установки максимального количества сеансов на вашем узле.

XX:ActiveProcessorCount=**

** это ваши предпочтительные максимальные сеансы. Надеюсь, это сработает для вас!

Комментарии:

1. Привет, Алекс, спасибо за подробности! Я смог использовать это в Amazon ECS со следующей переменной среды: JAVA_OPTS=-XX:activeProcessorCount=**