Skip to content
Эта страница создана и переведена с помощью ИИ. Если вы заметили неточности, помогите нам улучшить её. Редактировать на GitHub

Рабочий процесс сессии ​

Рабочий процесс сессии обеспечивает изоляцию на уровне процессов для сессий агента. Вместо выполнения всех сессий в одном процессе PRX может порождать выделенные рабочие процессы, которые содержат сбои и обеспечивают ограничения ресурсов на уровне ОС.

Мотивация ​

Изоляция процессов обеспечивает ряд преимуществ:

  • Локализация сбоев — аварийное завершение одной сессии не затрагивает другие
  • Ограничения ресурсов — применение лимитов памяти и CPU на сессию через cgroups или механизмы ОС
  • Граница безопасности — сессии с разными уровнями доверия работают в отдельных адресных пространствах
  • Плавная деградация — основной процесс может перезапустить сбойные рабочие процессы

Архитектура ​

┌──────────────┐
│ Основной     │
│ процесс      │
│ (Супервизор) │
│               │
│  ┌──────────┐ │    ┌─────────────┐
│  │ Сессия A ├─┼───►│ Рабоч. проц.│
│  └──────────┘ │    └─────────────┘
│  ┌──────────┐ │    ┌─────────────┐
│  │ Сессия B ├─┼───►│ Рабоч. проц.│
│  └──────────┘ │    └─────────────┘
└──────────────┘

Основной процесс выступает в роли супервизора, взаимодействуя с рабочими процессами через IPC (Unix-сокеты домена или каналы).

Протокол связи ​

Рабочие процессы взаимодействуют с супервизором по протоколу JSON с префиксом длины через IPC-канал:

  1. Spawn — супервизор отправляет конфигурацию сессии рабочему процессу
  2. Messages — двунаправленная потоковая передача сообщений пользователя/агента
  3. Heartbeat — периодические проверки состояния
  4. 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

Связанные страницы ​

Released under the Apache-2.0 License.