#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 процессора.
Комментарии:
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=**