Dynamic runtime limits
The following resource limits apply to each instance (pod) of a Magic Containers application running on the dynamic runtime:- CPU: 8 CPUs
- Memory: 32 GiB
- Network ingress: 1 Gbps
- Network egress: 1 Gbps
- Outbound connections: 500
- Ephemeral storage: 10 GB
On trial accounts, each instance runs with 1 CPU and 4 GiB of memory instead. The remaining runtime limits above are the same for trial and standard accounts.
The default bandwidth limit is 1 Gbps. If your application requires higher bandwidth, you can request an increase by submitting a support ticket.
Persistent volume limits
The following I/O limits are defined in the pod cgroup and apply to each persistent volume individually. If a pod has multiple volumes attached, each volume receives these limits:- Read throughput: 10 MB/s
- Write throughput: 10 MB/s
Once an application consumes 10 GB of ephemeral storage, the container/pod will be evicted and automatically restarted. Any data stored in ephemeral storage is lost during this process.
CPU core detection
This section assumes a standard account, where each instance gets 8 CPUs. On a trial account each instance gets 1 CPU, so use 1 wherever the examples below use 8.
Symptoms of incorrect CPU detection
- Application performance is significantly slower than expected
- CPU utilization appears low despite the application being busy
- Multi-threaded workloads (encoding, compilation, etc.) perform worse than on less powerful machines
Optimizing multi-threaded applications
To achieve optimal performance, configure your applications to use 8 threads or fewer. Below are examples for common use cases.FFmpeg video encoding
FFmpeg and its video encoders may auto-detect the host’s CPU count and spawn too many threads. Here’s how to configure different encoders for optimal performance on Magic Containers: x265 (HEVC) encoding Create a wrapper script/usr/local/bin/ffmpeg-x265-optimized:
General thread configuration
For other applications, look for thread or worker count configuration options and set them to 8 or fewer. Common environment variables and settings include:OMP_NUM_THREADS=8- OpenMP applicationsGOMAXPROCS=8- Go applicationsUV_THREADPOOL_SIZE=8- Node.js applications--workers=8or-j8- Various CLI tools
Port Limits
Our platform applies default restrictions to inbound and outbound traffic on the following ports: 25, 465, 587, and 2525. This is to maintain a secure environment and prevent unauthorized mail relay.If your application requires any of these ports to be opened, contact our support team for assistance. They will review and enable the necessary configurations to ensure your application functions correctly.
Account-level limits
Standard accounts
By default, the following limits apply to each standard (non-trial) account on the Magic Containers platform:- Number of applications per account: 20.
- Number of regions per application: No limit (all available regions).
- Number of instances/pods per region per application: Up to 10.
- Number of persistent volumes per application: 2.
- Maximum persistent volume size: 100 GB.
Trial accounts
If you are on a trial account, the following limits apply instead:- Number of applications per account: 1.
- Number of regions per application: 3.
- Number of instances/pods per region per application: 3.
- Number of instances/pods per application: 3 across all regions.
- Number of persistent volumes per application: 1.
- Maximum persistent volume size: 30 GB.
- CPU per instance: 1 CPU.
- Memory per instance: 4 GiB.
A verified payment card is required before a trial account can deploy or manage applications. Verifying your card does not raise the limits above.Trial limits are lifted when your account moves to a paid plan. Your existing applications are then updated automatically to the standard CPU and memory limits.