Skip to content
이 페이지는 AI의 도움으로 작성 및 번역되었습니다. 부정확한 내용이 있으면 개선에 참여해 주세요. GitHub에서 편집

Session Worker

Session Worker는 에이전트 세션에 프로세스 수준의 격리를 제공합니다. 모든 세션을 단일 프로세스에서 실행하는 대신, PRX는 장애를 격리하고 OS 수준에서 리소스 제한을 적용하는 전용 워커 프로세스를 생성할 수 있습니다.

동기

프로세스 격리는 여러 이점을 제공합니다:

  • 장애 격리 -- 하나의 세션에서 충돌이 발생해도 다른 세션에 영향을 미치지 않습니다
  • 리소스 제한 -- cgroup 또는 OS 메커니즘을 통해 세션별 메모리 및 CPU 제한을 적용합니다
  • 보안 경계 -- 다른 신뢰 수준의 세션이 별도의 주소 공간에서 실행됩니다
  • 우아한 성능 저하 -- 메인 프로세스가 실패한 워커를 재시작할 수 있습니다

아키텍처

┌──────────────┐
│  Main Process │
│  (Supervisor) │
│               │
│  ┌──────────┐ │    ┌─────────────┐
│  │ Session A ├─┼───►│ Worker Proc │
│  └──────────┘ │    └─────────────┘
│  ┌──────────┐ │    ┌─────────────┐
│  │ Session B ├─┼───►│ Worker Proc │
│  └──────────┘ │    └─────────────┘
└──────────────┘

메인 프로세스는 슈퍼바이저로서 IPC (Unix 도메인 소켓 또는 파이프)를 통해 워커와 통신합니다.

통신 프로토콜

워커는 IPC 채널을 통해 길이 접두사 JSON 프로토콜을 사용하여 슈퍼바이저와 통신합니다:

  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에서 실행할 때 Session Worker는 cgroup 기반 리소스 제한을 적용할 수 있습니다:

toml
[agent.worker.limits]
memory_limit_mb = 256
cpu_shares = 512

관련 페이지

Released under the Apache-2.0 License.