Рабочий процесс сессии
Рабочий процесс сессии обеспечивает изоляцию на уровне процессов для сессий агента. Вместо выполнения всех сессий в одном процессе PRX может порождать выделенные рабочие процессы, которые содержат сбои и обеспечивают ограничения ресурсов на уровне ОС.
Мотивация
Изоляция процессов обеспечивает ряд преимуществ:
- Локализация сбоев — аварийное завершение одной сессии не затрагивает другие
- Ограничения ресурсов — применение лимитов памяти и CPU на сессию через cgroups или механизмы ОС
- Граница безопасности — сессии с разными уровнями доверия работают в отдельных адресных пространствах
- Плавная деградация — основной процесс может перезапустить сбойные рабочие процессы
Архитектура
┌──────────────┐
│ Основной │
│ процесс │
│ (Супервизор) │
│ │
│ ┌──────────┐ │ ┌─────────────┐
│ │ Сессия A ├─┼───►│ Рабоч. проц.│
│ └──────────┘ │ └─────────────┘
│ ┌──────────┐ │ ┌─────────────┐
│ │ Сессия B ├─┼───►│ Рабоч. проц.│
│ └──────────┘ │ └─────────────┘
└──────────────┘Основной процесс выступает в роли супервизора, взаимодействуя с рабочими процессами через IPC (Unix-сокеты домена или каналы).
Протокол связи
Рабочие процессы взаимодействуют с супервизором по протоколу JSON с префиксом длины через IPC-канал:
- Spawn — супервизор отправляет конфигурацию сессии рабочему процессу
- Messages — двунаправленная потоковая передача сообщений пользователя/агента
- Heartbeat — периодические проверки состояния
- Shutdown — сигнал корректного завершения
Конфигурация
toml
[agent.worker]
enabled = false
ipc_socket_dir = "/tmp/prx-workers"
heartbeat_interval_secs = 10
max_restart_attempts = 3Ограничения ресурсов
При работе на Linux рабочий процесс сессии может применять ограничения ресурсов на основе cgroup:
toml
[agent.worker.limits]
memory_limit_mb = 256
cpu_shares = 512Связанные страницы
- Среда выполнения агента — обзор архитектуры
- Цикл агента — основной цикл выполнения
- Песочница безопасности — бэкенды песочницы