عامل الجلسة
يوفر عامل الجلسة عزلًا على مستوى العمليات لجلسات الوكيل. بدلًا من تشغيل كل الجلسات في عملية واحدة، يستطيع PRX إنشاء عمليات عامل مخصصة تحتوي الأعطال وتفرض حدود الموارد على مستوى نظام التشغيل.
الدافع
يوفر عزل العمليات عدة فوائد:
- احتواء الأعطال -- تعطل جلسة واحدة لا يؤثر في الجلسات الأخرى
- حدود الموارد -- فرض حدود ذاكرة وCPU لكل جلسة عبر cgroups أو آليات نظام التشغيل
- حد أمني -- الجلسات ذات مستويات الثقة المختلفة تعمل في مساحات عناوين منفصلة
- تدهور سلس -- يمكن للعملية الرئيسية إعادة تشغيل العمال المتعطلين
البنية
┌──────────────┐
│ Main Process │
│ (Supervisor) │
│ │
│ ┌──────────┐ │ ┌─────────────┐
│ │ Session A ├─┼───►│ Worker Proc │
│ └──────────┘ │ └─────────────┘
│ ┌──────────┐ │ ┌─────────────┐
│ │ Session B ├─┼───►│ Worker Proc │
│ └──────────┘ │ └─────────────┘
└──────────────┘تعمل العملية الرئيسية كمشرف، وتتواصل مع العمال عبر IPC (مقابس Unix domain أو pipes).
بروتوكول الاتصال
يتواصل العمال مع المشرف باستخدام بروتوكول 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صفحات ذات صلة
- وقت تشغيل الوكيل -- نظرة عامة على البنية
- حلقة الوكيل -- دورة التنفيذ الأساسية
- Sandbox الأمان -- الواجهات الخلفية لـ Sandbox