Масштабирование
Как EVA растёт под нагрузкой: вертикально за счёт ёмкости рантайма и горизонтально за счёт реплик. Что общее между репликами и какие ограничения нужно учитывать.
Что ограничивает нагрузку
| Ресурс | Чем управляется |
|---|---|
| Одновременные ходы чата | Ёмкость рантайма: процессы, сессии на процесс, очередь |
| Навыки пакетов | Число параллельных capability-isolate |
| Фоновые сервисы | Число одновременно работающих фоновых сервисов |
| Скорость моделей | Лимиты провайдера или шлюза моделей |
| Тяжёлая обработка документов и аудио | Ресурсы сервисов экосистемы, а не EVA |
EVA сама не выполняет OCR, индексацию и расшифровку. Эта нагрузка лежит на отдельных сервисах и масштабируется вместе с ними.
Вертикально
Начните с ёмкости рантайма в Админ → Рантайм. Параметры применяются без перезапуска.
- Число прогретых слотов равно произведению Макс. процессов сессий на Сессий на процесс.
- Каждый процесс воркера держит соединения MCP своих чатов, поэтому память растёт с числом процессов.
- Если пользователи часто видят «Ожидание свободного слота», увеличьте слоты или ресурсы пода.
Горизонтально
Несколько подов с одним образом за балансировщиком.
| Что | Как настроить |
|---|---|
| База | Одна PostgreSQL на все реплики |
| Том данных | Один том ReadWriteMany на /app/apps/api/.data для всех реплик |
| Планировщик агентов | Включён только на одной реплике. На остальных AGENT_SCHEDULER_INTERVAL_MS=0, иначе расписания сработают несколько раз |
| Ёмкость | Политика хранится в базе и одинакова для всех. Общая ёмкость равна ёмкости одной реплики, умноженной на число реплик |
| Балансировщик | Привязка сессии к поду, чтобы поток ответа и повторное подключение шли к той реплике, где выполняется ход |
Ограничения
- Ход чата выполняется в Runtime той реплики, которая его приняла. Чат закрепляется за воркером этой реплики, пока действует аренда.
- При старте каждая реплика восстанавливает фоновые сервисы в своём Package-pool. Фоновые сервисы, которые хранят состояние в рабочей папке или сами ходят во внешние системы по таймеру, при нескольких репликах будут работать в нескольких экземплярах. Для таких сервисов держите отдельную реплику или проектируйте их с учётом параллельной работы.
Сервисы экосистемы
Каждый сервис масштабируется отдельно. EVA обращается к ним по одному адресу MCP, поэтому за адресом может стоять как один под, так и несколько, если сервис это поддерживает. Подробнее: Развёртывание сервисов.