Hi LiveKit team,
I’m planning to self-host LiveKit Egress in Kubernetes and would like some guidance on infrastructure sizing and autoscaling.
Our use case
- Track Egress (not RoomComposite)
- Supporting both 1:1 video calls and group video calls
- Recording each participant’s audio and video tracks separately
- Maximum recording resolution: 720p (1280×720)
- Maximum frame rate: 30 FPS
- A separate merge service combines the recorded tracks into a final MP4
- Final recordings are uploaded to S3
- We are planning for hundreds of concurrent recordings
Questions
- Is there an official recommendation for the minimum and recommended CPU/RAM required per Egress instance for Track Egress at 720p/30 FPS?
- Approximately how many concurrent Track Egress jobs can we expect from servers with:
- 4 vCPU / 8 GB RAM
- 8 vCPU / 16 GB RAM
- 16 vCPU / 32 GB RAM
- For 1:1 calls, if both participants have audio and video tracks, are there any specific resource considerations compared with recording a single track?
- For group calls, where multiple participants’ audio/video tracks are being recorded separately, how does the number of tracks per room affect Egress CPU, memory, and network usage?
- Does Track Egress normally subscribe to the highest available simulcast layer? If so, can we configure or control which simulcast layer Egress records?
- For a maximum of 720p/30 FPS, what factors have the biggest impact on CPU and memory consumption for Track Egress?
- Are there recommended Kubernetes CPU/memory requests and limits for Track Egress?
- What is the recommended approach for autoscaling Egress workers in Kubernetes? Is CPU-based HPA sufficient, or is there a better metric/approach for determining when another Egress worker is required?
- Since we expect hundreds of concurrent recordings, is there a recommended architecture where LiveKit Egress is hosted separately from the LiveKit Server and scaled independently?
- Is there any managed/cloud platform or LiveKit-supported service available where Egress workers can be hosted separately with automatic scaling, rather than managing the Egress Kubernetes deployment ourselves?
- Are there any production examples or recommendations for sizing a large-scale Track Egress deployment supporting both 1:1 and group calls?
Any recommendations or production experience would be greatly appreciated. Thanks!