Масштабирование изолированных контекстов BotBrowser
Планируйте емкость по измеренной нагрузке с ограниченной очередью, чистым жизненным циклом и явными требованиями изоляции.
Нужна поддерживаемая продуктовая документация?
У этой статьи есть соответствующая страница в центре документации. Используйте docs для каноничного сценария настройки, актуальных флагов и долгосрочной справки.
Емкость начинается с нагрузки
Емкость браузера определяется нагрузкой на конкретном сервере. Простая навигация, медиаприложение, генератор документов и долгий дашборд требуют разных ресурсов. Число из другого развертывания бесполезно, если не совпадают страницы, действия, сеть, графика, хранилище и критерии завершения.
Per-Context разделяет назначения профиля, хранилища, региона и маршрута разрешенных сессий, используя некоторые общие ресурсы браузера. Это может сократить повторную работу, но страницы, медиа, загрузки, фоновые задачи и снимки по-прежнему используют процессор, память, сеть и файлы.
Планируйте по измерениям, а не по обещанному числу контекстов. Определите представительную задачу, выполните ее на целевом образе, измерьте устойчивые значения и пики, затем установите предел с запасом для восстановления. Повторяйте после изменения браузера, сервера, страниц или политики.
Выберите границу изоляции
Сначала определите, что требуется изолировать. Контекст может иметь отдельное хранилище и назначение идентичности внутри общей инфраструктуры. Это подходит тестовым арендаторам, региональным проверкам и независимым учетным записям, когда владелец сервиса разрешил работу.
Контекст не является отдельным процессом операционной системы. Отдельные экземпляры нужны при разных привилегиях, ресурсах, расширениях или доменах отказа. Отдельные серверы или контейнеры нужны, когда граница включает систему и сеть.
Закрепите решение в политике. Планировщик должен знать, какие задачи могут использовать общий браузер, а какие требуют выделенного ресурса. Нехватка емкости не должна ослаблять утвержденную изоляцию.
Контекст сохраняет одно назначение на протяжении жизни. До первой страницы привяжите профиль, хранилище, маршрут, регион и владельца. При изменении плана закройте контекст и создайте новый.
Определите представительную задачу
Полезная проверка начинается с транзакции приложения, а не с пустой страницы. Выберите обычные страницы и действия. Добавляйте вход только с разрешения владельца и защищайте учетные данные. Включайте медиа, загрузки, снимки, документы и фоновые задачи, если они используются сервисом.
Опишите поступление, навигацию, работу, успех и очистку. Укажите допустимое время, критерий завершения, повторы и судьбу хранилища. Тогда планировщик отличит быстрый незавершенный результат от корректного.
Используйте рабочую версию, образ, класс сервера, графику, расширения и сеть. Проверка на ноутбуке не утверждает предел для другой среды. Виртуализация и контейнеры влияют на память, общее хранилище и графику.
Подготовка должна соответствовать эксплуатации. Если процессы остаются прогретыми, измерьте запуск и прогретое состояние. Если группа создается заново, включите старт и остановку. Кэш и хранилище подчиняются тем же правилам.
Разделяйте классы. Легкая проверка и тяжелый отчет не должны иметь одну среднюю стоимость. Для них можно задать разные очереди и пределы.
Для каждого класса зафиксируйте причину существования и владельца. Если задача перестала представлять реальный пользовательский путь, ее следует заменить, а не сохранять ради исторической сравнимости. При изменении страницы обновляйте сценарий и повторно измеряйте базу до повышения рабочего предела.
Не смешивайте приемочную нагрузку с фоновым обслуживанием. Резервное копирование, обновление образов, сбор эксплуатационных журналов и соседние сервисы могут занимать те же ресурсы. Проверка должна включать обычное расписание сервера либо явно резервировать место для этих операций.
Измеряйте полный жизненный цикл
Наблюдайте запуск браузера, создание контекста, активность, простой, закрытие и остановку. Пики часто возникают при навигации, обработке медиа, снимках или очистке.
Отслеживайте доступную память, процессор, хранилище, сеть, открытые файлы, длительность, ожидание в очереди, успех, время создания и закрытия. Они показывают, может ли сервис завершать разрешенную работу с запасом для восстановления.
Измеряйте завершенные задачи за период, а не только одновременно открытые контексты. Рост параллельности иногда уменьшает производительность из-за конкуренции. Подходящая точка предсказуемо выполняет работу в рамках целей сервиса.
Включите очистку после сбоя. Отмените задачу в контролируемых точках, активируйте обычный таймаут и убедитесь, что страницы, контексты, хранилища и аренды освобождаются.
Тест должен быть достаточно долгим, чтобы показать накопление. Рост остаточной памяти или времени закрытия требует анализа до повышения предела.
Сравнивайте несколько повторов, а не лучший результат. Отмечайте разброс длительности, частоту отмен и время возврата ресурса в пул. Большой разброс указывает на слабую предсказуемость даже тогда, когда среднее значение укладывается в цель.
Проверьте восстановление после временной недоступности сети и приложения. Задача должна перейти в понятное конечное состояние, а ее контекст должен закрыться по той же политике, что и при обычном завершении. Накопление повторов не должно занимать всю очередь.
Снимайте базу до обновления и после него на одинаковом классе сервера. Если условия различаются, отмечайте это в решении. Иначе изменение инфраструктуры может быть ошибочно принято за улучшение или ухудшение браузерной версии.
Установите безопасный предел
Повышайте нагрузку шагами и ждите стабильного состояния. Сравнивайте завершенную работу, задержку, ошибки и запас. Остановитесь, когда цели ухудшаются или запас становится мал. Рабочий предел должен быть ниже этой точки.
Оставляйте резерв для изменений страниц, сети, медиа и соседних сервисов. Максимум, однажды прошедший тест, не является рабочим пределом. Определите аварийный порог, который остановит прием до потери управляемости сервера.
Документируйте версию, образ, сервер, задачи, период, сеть и дату. Изолированное число теряет смысл после изменения среды.
Ограничивайте и группу браузера, и сервер. Первая принимает контексты по измеренной нагрузке. Второй принимает группы по ресурсам и политике изоляции. Любой предел создает обратное давление.
Пересматривайте решение после обновления браузера, системы, графики, расширений, страниц, хранилища, сети или сервера.
Назначьте срок действия результата измерения. Он зависит от частоты изменений продукта и инфраструктуры. По истечении срока существующий предел может временно сохраняться только с прежним образом и нагрузкой, но не должен автоматически переноситься на новую среду.
Утверждение предела включает владельца, дату, покрытые классы и величину резерва. Оператор должен понимать, какое изменение требует повторной проверки. Одно число без этих условий не является решением по емкости.
Ограничивайте прием задач
Неограниченная очередь только скрывает перегрузку. Ограничьте ее возраст и объем принятой работы. Отклоняйте или переносите запросы, которые не начнутся в согласованный срок.
Каждой задаче выдавайте аренду, связывающую очередь, группу, контекст, владельца и срок. Освобождайте ее после очистки. Истечение аренды позволяет восстановить назначение при исчезновении процесса.
Учитывайте класс нагрузки. Дорогие задачи могут иметь отдельный пул или вес. Один класс не должен навсегда блокировать остальные.
Запускайте контексты постепенно. Инициализация может создать пик даже при допустимом устойчивом состоянии. При росте задержки или давления приостановите прием.
Повторы подчиняются тем же пределам. Ограничивайте попытки, добавляйте задержку и конечное состояние отказа. Сохраняйте назначение, если разрешенная сессия должна продолжаться.
Приоритеты очереди должны быть прозрачными. Срочная задача может получить место раньше, но не должна обходить требования изоляции или занимать весь пул неопределенное время. Для каждого приоритета задайте максимальный возраст и порядок отмены.
Если прием остановлен, возвращайте вызывающей системе понятный статус. Она должна знать, следует ли перенести работу, завершить ее или передать оператору. Молчаливое ожидание создает повторные запросы и затрудняет оценку фактической нагрузки.
Проверяйте поведение при заполненной очереди в приемочной среде. Убедитесь, что уже принятые задачи завершаются, новые не создают частичные контексты, а восстановление начинается без ручного изменения данных назначения.
Сохраняйте владельца жизненного цикла
Один сервис должен владеть группой от запуска до остановки. Он создает браузер, принимает контексты, следит за арендой, закрывает работу, освобождает группу и останавливает ее. Разделенная ответственность оставляет ресурсы вне учета.
Определите состояния ожидания, запуска, активности, закрытия и завершения. Переходы должны безопасно повторяться. Контекст с просроченным закрытием уходит на согласование и не получает новые задачи.
Дождитесь закрытия до возврата места. Если оно не завершается в измеренный срок, освободите и замените всю группу по политике. Не принимайте работу при неопределенном владении.
Перед обновлением остановите прием, дайте задачам завершиться, отмените оставшиеся по правилам и проверьте аренды. Затем замените группу.
Состояние перехода должно быть наблюдаемым. Пока группа освобождается, планировщик не считает ее доступной и не назначает туда новую работу. После замены сервис подтверждает версию, готовность и чистое состояние до открытия приема.
Если владелец жизненного цикла перезапускается, он восстанавливает состояние из надежной записи назначений. Неизвестный контекст не принимается как свободный. Его изолируют, завершают поддерживаемым способом и только затем возвращают ресурсы.
Максимальный срок жизни группы определяйте наблюдаемой стабильностью и обслуживанием. Не прерывайте действующую сессию по произвольному времени. Освобождайте на границе сессии.
Защищайте профиль и хранилище
Планировщик назначает только профили, одобренные для нагрузки, версии и региона. Он не подставляет несвязанный профиль при недоступности нужного.
Постоянное хранилище остается с одной идентичностью. Временное удаляется по политике. Не подключайте одно место к двум активным контекстам и не соединяйте старое состояние с новым назначением.
Маршруты подчиняются той же модели. Свяжите сетевую политику до начала работы. Повторы остаются внутри разрешенной сети. Региональное изменение требует новой сессии.
Храните учетные данные вне профилей и журналов. Процессы получают минимальный доступ. Панелям емкости нужны ресурсы и состояния, а не приватное содержимое.
Наблюдайте за здоровьем сервиса
Отслеживайте возраст очереди, прием, активные и завершенные задачи, эксплуатационные ошибки, повторы, отмену, закрытие, замену групп, запас памяти, давление процессора и доступность серверов.
Оповещайте по тенденциям. Устойчивый рост времени закрытия, очереди или остаточной памяти важнее короткого пика. Для каждого сигнала определите остановку приема, освобождение группы, исключение сервера или откат.
Разделяйте ошибки приложения и емкости. Страница может не пройти проверку при свободных ресурсах. Перегрузка может затронуть несколько исправных задач.
Используйте стабильные ссылки на задачу, контекст, группу и сервер, без данных страниц и секретов. Глубокая диагностика должна быть защищенной и краткосрочной.
Регулярно сравнивайте аренды с активными контекстами и устраняйте расхождения поддерживаемым закрытием.
Панель должна показывать этап жизненного цикла, а не только итоговую ошибку. Рост времени запуска, ожидания очистки или замены группы часто появляется раньше массовых отказов. По этим тенденциям можно снизить прием до того, как сервер потеряет запас.
Отдельно наблюдайте за задачами, которые завершились для вызывающей системы, но еще удерживают ресурс. Такая разница уменьшает реальную емкость и обычно указывает на незавершенное закрытие или потерянную аренду.
Восстановление после перегрузки
Первым делом остановите прием. Сохраните активные задачи в пределах срока и отмените остальные по политике. Создание новых задач только замедляет очистку.
Освободите пострадавшую группу. Если сервер продолжает ухудшаться, исключите его из планировщика и замените группы через супервизор.
После восстановления начните ниже предела, подтвердите очистку и наблюдайте тенденции. Если событию предшествовало изменение, повторите измерение до возврата нормальной емкости.
Не возвращайте исключенный сервер только по факту доступности. Сначала подтвердите, что старые группы остановлены, временные данные обработаны по политике, ресурсы стабилизировались и контрольный класс задач завершается с ожидаемым запасом.
Повторное событие требует снижения рабочего предела или изменения модели развертывания. Временное увеличение таймаутов может скрыть перегрузку, но не восстанавливает предсказуемое завершение. Решение должно учитывать очередь, очистку и соседние сервисы.
Сохраняйте хронологию, метрики, очередь, события, версию и класс нагрузки. Для анализа емкости не нужны приватные данные страницы.
Версии и откат
Включите емкость в приемку версии. Сравните завершение, задержку, запас, создание и очистку с базой. Исследуйте существенные изменения до продвижения.
Сначала разверните ограниченную группу и сохраните предыдущий образ. Для отката освободите кандидата и восстановите полную пару. Не заменяйте бинарные файлы под активными контекстами.
Кандидат получает только заранее выбранную часть разрешенной нагрузки. Сравнивайте его с действующей группой по одинаковым классам и периодам. Если различие нельзя объяснить средой или входной нагрузкой, остановите продвижение и сохраните прежний предел.
Откат считается завершенным после восстановления приема, закрытия кандидата и проверки оставшихся аренд. Сам факт запуска прежнего образа недостаточен, если очередь или хранилища все еще связаны с выведенной группой.
Запишите доказательства, рецензента, предел, классы и порог отката. Повышение без измерений превращает небольшое изменение в общий инцидент.
Практическая проверка
До эксплуатации убедитесь:
- У каждого класса есть представительная задача и критерий завершения.
- Политика указывает контекст, экземпляр или сервер как границу.
- Емкость измерена на целевой версии, образе и сервере.
- Предел сохраняет запас для восстановления.
- Прием, очередь, повторы и запуск ограничены.
- Каждый контекст имеет профиль, хранилище, маршрут, владельца и жизненный цикл.
- Очистка заканчивается до возврата емкости.
- Постоянное хранилище не переходит между идентичностями.
- Панели не содержат секретов и приватных данных.
- Группы освобождаются и откатываются без влияния на другую работу.
В эксплуатации проверяйте производительность, ожидание, очистку, замены и запас. Снижайте прием и расследуйте до увеличения емкости.
После инцидента обновите представительную задачу, если она не воспроизвела реальную нагрузку. Запишите, какой ранний показатель мог остановить прием раньше, и добавьте его в эксплуатационное решение. Изменение предела проходит тот же процесс проверки, что и изменение версии.
Проверяйте список не только перед первым запуском. Ежемесячная эксплуатационная сверка выявляет устаревшие классы, потерянные аренды и пределы, которые больше не соответствуют серверу. После существенного изменения проводите внеплановый пересмотр.
Владелец сервиса должен уметь показать путь одной задачи через очередь, активную работу, закрытие и освобождение ресурса. Если этап нельзя связать с записью назначения, планирование емкости опирается на неполные данные.
Выберите модель
Per-Context подходит, когда нужны отдельные идентичность и хранилище, а общие ресурсы разрешены. Отдельные экземпляры подходят для процессных границ. Выделенные процессы подходят, когда граница включает систему или сеть.
Один сервис может сочетать модели. Выбор остается явным в политике планировщика. См. документацию Per-Context, руководство по производительности и управление профилями. Сравните тарифы для выбора развертывания.
Начинайте с самой простой модели, которая соблюдает утвержденную границу. Усложнение оправдано только измеренным требованием к изоляции, восстановлению или ресурсам. Перед переходом подготовьте план освобождения старых групп и убедитесь, что активные сессии завершатся в прежней модели.
После внедрения сравните ожидание, завершение, очистку и запас с приемочной базой. Если новая схема увеличивает число зависших переходов или затрудняет откат, снизьте прием и пересмотрите распределение ответственности до дальнейшего расширения.
Разделяйте решение о модели и решение о пределе. Общие ресурсы могут быть допустимы с точки зрения изоляции, но недостаточны для тяжелой нагрузки. И наоборот, свободная память не разрешает объединять задачи с разными границами данных или отказа.
При добавлении сервера подтвердите одинаковые образ, политики, наблюдаемость и процедуру очистки. Новый узел не получает полную нагрузку сразу. Сначала он выполняет представительные классы, проходит контролируемое исключение и возврат, затем постепенно входит в общий пул.
При выводе сервера остановите новые назначения, дождитесь завершения либо отмены задач и сверьте аренды. Постоянные хранилища переносятся только утвержденным процессом. Запись о выводе должна подтверждать, что старый узел больше не считается доступной емкостью.
Похожие статьи
Переведите BotBrowser из исследований в продакшн
Используйте эти руководства, чтобы понять модель, а затем перейти к кроссплатформенной валидации, изолированным контекстам и масштабируемому браузерному развертыванию.