This document explains how to estimate what your Hubs Cloud server's CCU (concurrent users) limit is based on the instance type used, for both the entire server and individual rooms.
Disclaimer for Estimating CCU Limits
There are several factors that currently limit how many users can be on a server or in a room in a Hubs Cloud server:
Generally speaking, the more vCPU's your instance type has (Please consult Amazon EC2 Instance Types), the more overall CCU it can support.
The device used by a user may affect their ability to successfully connect to a room. Webkit based browsers (anything on iOS), for example, will hit their own limits past 24 CCU in a room. A lower-end computer may struggle loading/rendering a large number of avatars + additional media in a room in general. This document does not factor in client-side factors, and only concerns itself with server-side limitations.
The more users actively moving around, and the more users using devices with head/hand tracking, the fewer total users a room can support.
Inactive users (in-room but otherwise not speaking/moving) can be considered similar to users in-lobby for the purposes of determining ccu.
Various features such as (but not limited to) media uploading, photo/video capture (via the camera tool), and link thumbnail generation, use varying degrees of server resources that may effect CCU limits.
Please see AWS Estimating Costs and Cost Charts (Alpha) for cost estimations.
Estimated CCU Table (1 App / 1 Stream server)
The following table lists measured and estimated CCU for different instance types:
Active indicates "worst case scenario" where use is in-room and talking and moving with tracked head and hands.
Inactive indicates user who is either in-lobby or is otherwise not speaking or moving at all while in-room.
Inactive in-room users are slightly more expensive than in-lobby users both due to WebRTC handshaking required to establish 2-way communication and "heartbeat" messages that are infrequently sent by the client.
|AWS Instance Type||vCPUs||Max Active CCU, single-room||Max Inactive CCU (w/ 25 active CCU), single-room||Max Inactive CCU (w/ 10 active CCU), single-room||Max Rooms w/25 active CCU|
- ~ indicates that the number is calculated and not measured from benchmarking.
- c5.24xlarge numbers are very theoretical, actual results may vary.
Formulas to calculate CCU:
Warning: Napkin Math Ahead
Max Active CCU, single room
where C = # of vCPU's
Max Active CCU = √(~1000 * C)
Max Inactive CCU w/ X active CCU, single room:
Max Inactive CCU = (Max Active CCU² - X²) / X
Max rooms w/ 25 active CCU:
where C = # of vCPU's
Max Rooms = ~2 * C
Can I use a t3.micro or a t3.small?
t3.micro only has 1GB of memory, and is not recommended. t3.small has 2GB of memory, and may be sufficient for small gatherings or casual testing.
What's the difference between a t3.medium and a t3.large?
t3.medium and t3.large only differ in memory, which will benefit the server during high-memory usage situations.
What's the difference between a c4.large and c5.large?
While the c4.large and c5.large have similar vCPU and memory, the c4.large has only a fraction of the networking performance/bandwidth of the c5.large.
What if I use more than 1 app/stream server?
Using more servers, or "scaling horizontally", will increase overall server CCU but not per-room CCU.
Can I use different instance types for app/stream servers?
At the time of writing this document, app servers are more resource demanding than stream servers (except possibly in cases of high video/screen sharing usage). You may be able to use a smaller instance type for stream servers and maintain relative similar CCU numbers.
How do I increase the max user cap in a room?
From the admin panel, server admins can adjust Default room size and Maximum room size under "Setup-> App Settings-> Rooms". Room admins may adjust Room Size under "Room Settings" to within that range. This only affects the maximum number of users allowed "in-room" and does not currently limit "in-lobby" users.