📝 Blog Summary
This blog explores the performance bottlenecks, scaling strategies, and architectural decisions that determine how well FreeSWITCH performs under high call volumes. Read on to learn how to scale FreeSWITCH without compromising reliability or call quality.
“Our product is doing well.” Too well. Last month, traffic grew 40%. This month, another 35%.
Your FreeSWITCH cluster, which used to cost at 30% utilization, now spikes to 90% on weekday afternoons.
Growth is supposed to be the goal, and it is, but somewhere between “we need more customers” and “we have more customers,” the infrastructure stopped having room to breathe.
This is the strange paradox of scaling FreeSWITCH: the problem usually shows up exactly when everything else is going right.
Understanding where those limits appear and how to remove them is critical for sustaining growth.
This guide explores the capacity limits of a FreeSWITCH VoIP Server, along with the performance tuning, scaling strategies, and infrastructure components required to support high call volumes reliably.
It starts with a question that sits at the center of every scaling project: how many concurrent calls can a single FreeSWITCH server actually handle?
What is Scaling FreeSWITCH for High Concurrent Call Volumes?
Scaling FreeSWITCH means increasing its ability to process more concurrent calls and higher call rates without affecting call quality, stability, or reliability. It involves optimizing server resources, removing performance bottlenecks, and expanding infrastructure as call traffic grows.
Concurrent Calls vs Calls Per Second (CPS)
Many teams use these terms interchangeably, but they measure different aspects of capacity.
| Metric | Measures | Example |
|---|---|---|
| Concurrent Calls | SIP proxy, registrar, SBC, load balancer | Active calls at a specific moment |
| Calls Per Second (CPS) | New calls established every second | 100 new calls initiated per second |
For example, a system may support 5,000 concurrent calls while handling only 100 new calls per second. Both metrics influence overall platform performance.
Why Both Metrics Matter
Concurrent calls determine how much active traffic a FreeSWITCH deployment can sustain.
CPS determines how quickly new traffic can enter the platform during peak periods.
A deployment may have enough resources for thousands of active calls but still experience congestion if call setup requests arrive faster than the system can process them.
This distinction becomes especially important for contact centers, dialers, and carrier-grade VoIP platforms.
Common Scaling Objectives
Most FreeSWITCH scaling projects focus on three goals:
- Support higher concurrent call volumes
- Increase call setup capacity during traffic spikes
- Maintain consistent performance as usage grows
Achieving these goals requires more than increasing server specifications. It requires a clear understanding of capacity limits, traffic patterns, and the architecture needed to support long-term growth.
Before planning any scaling strategy, you need to know the limits of a single FreeSWITCH server.
How Do You Tune FreeSWITCH Performance for High Call Volume?
As call volumes grow, addressing issues in FreeSWITCH systems becomes essential for supporting higher concurrent calls and CPS without overloading resources. The goal is to resolve bottlenecks before they limit scalability.
1. Max-sessions Configuration
The max-sessions parameter defines the maximum number of simultaneous calls FreeSWITCH can handle. While increasing this value may seem like a simple way to support more traffic, setting it too high can overwhelm server resources during peak periods. On the other hand, a conservative value can artificially limit capacity even when resources are available. For this reason, the setting should be based on real-world performance testing rather than theoretical hardware limits.
2. Sessions-per-second Configuration
The sessions-per-second parameter determines how many new calls FreeSWITCH can establish every second. This plays an important role in controlling traffic bursts and protecting the platform from sudden spikes in call attempts. The ideal value depends on available CPU resources, expected traffic patterns, and the type of workload being handled. Properly tuning this parameter helps maintain stable call setup performance during periods of high demand.
3. SIP and RTP Optimization
As the number of FreeSWITCH concurrent calls increases, the platform must process a growing volume of SIP signaling and RTP media traffic. Inefficient SIP handling can increase call setup times, while RTP bottlenecks can affect voice quality and overall user experience. Optimizing SIP profiles and media processing helps reduce unnecessary overhead, allowing the platform to maintain performance as call volumes continue to grow.
4. Linux System Tuning
FreeSWITCH performance is influenced not only by application settings but also by the underlying operating system. Parameters such as file descriptor limits, network buffers, process limits, and kernel settings directly affect how efficiently the server handles VoIP traffic. Without proper Linux tuning, operating system constraints often become the limiting factor long before FreeSWITCH reaches its actual call-handling capacity.
The next challenge is identifying which resource reaches its limit first.
What are the Most Common FreeSWITCH Bottlenecks and Scaling Limits?
The most common FreeSWITCH scaling bottlenecks involve CPU capacity, database performance, RTP processing, network resources, and the way certain FreeSWITCH modules consume system resources under heavy traffic.
Identifying which constraint is reached first is essential for effective scaling.
1. CPU Constraints
CPU is often the first resource to come under pressure as call volumes increase. SIP signaling, media processing, and codec transcoding all consume processing power, making sustained high CPU usage an early sign that a server is approaching its practical limits.
2. Database Bottlenecks
As registrations, CDRs, and call transactions increase, database activity grows alongside them. Deployments that continue relying on SQLite at higher traffic levels can experience contention, affecting call setup performance and overall responsiveness.
3. RTP Processing Limits
Every call generates RTP packets that must be processed in real time. As FreeSWITCH concurrent calls increase, media traffic grows rapidly, and RTP handling can become a bigger challenge than SIP signaling itself.
4. Network Limitations
Higher call volumes place greater demands on network resources. Bandwidth constraints, packet loss, and interface limitations can affect call quality, particularly during traffic spikes.
5. Carrier CPS Restrictions
Available server capacity does not always translate into higher dialing capacity. Most carriers enforce CPS limits that restrict how many calls can be initiated per second, regardless of FreeSWITCH headroom.
Some bottlenecks can be tuned away. Others require changes to the underlying architecture.
How to Scale FreeSWITCH?
Scaling FreeSWITCH often requires FreeSWITCH load balancing to distribute signaling, media, and application workloads across multiple infrastructure components. As call volumes grow, relying on a single server becomes increasingly difficult and less reliable.
1. SIP Traffic Management
Kamailio and OpenSIPS help manage SIP signaling before traffic reaches FreeSWITCH. By handling registrations, routing, and traffic distribution, they reduce signaling overhead and allow FreeSWITCH to focus on call processing.
2. Multiple FreeSWITCH Servers
Adding more FreeSWITCH servers increases overall capacity while reducing reliance on a single node. Distributing traffic across multiple servers provides a more reliable and scalable approach to handling growing call volumes.
3. Media Processing
Media processing often becomes a bottleneck before signaling does. Tools such as RTPEngine can offload RTP handling from FreeSWITCH, improving scalability while maintaining call quality under heavier loads.
4. Database Architecture
As registrations, CDRs, and transactions increase, database performance becomes more important. Centralized databases such as PostgreSQL offer better concurrency than SQLite and help prevent database contention from limiting growth.
5. High Availability
Scaling is not only about supporting more calls but also about maintaining service continuity. Redundant SIP proxies, FreeSWITCH nodes, databases, and media components help ensure traffic continues flowing even when individual systems fail.
The easiest way to scale FreeSWITCH is to stop asking one server to do everything.
Even a well-designed architecture can struggle during sudden traffic surges and large-scale operational events.
Common FreeSWITCH Scaling Challenges
Scaling challenges become more noticeable as organizations use FreeSWITCH as WebRTC server to support larger user bases. Increased call volumes, database activity, and sudden traffic events can create issues that impact platform stability.
1. Registration Storms
Registration storms occur when large numbers of endpoints attempt to reconnect at the same time, often after an SBC, SIP proxy, or network outage. The sudden influx of registration requests can overwhelm signaling resources and slow service recovery.
2. Database Lock Contention
As registrations, CDRs, and transactions increase, database contention becomes more common. This issue is particularly noticeable in SQLite-based deployments, where competing operations can affect call processing performance.
3. Network Buffer Overruns
High call volumes generate significant RTP traffic, placing additional pressure on network resources. If buffers cannot process packets quickly enough, packet loss can occur, leading to jitter, poor audio quality, and dropped calls.
4. Traffic Surge Management
Unexpected traffic spikes can quickly increase demand on CPU, memory, and signaling resources. Without planning for burst traffic, even well-designed deployments can experience performance degradation during peak periods.
Most FreeSWITCH scaling issues appear during sudden events, not during normal operation.
Avoiding these issues starts with knowing how much capacity your infrastructure actually needs.
How Many FreeSWITCH Servers are Needed for High Call Volumes?
The number of FreeSWITCH servers you need depends on your expected concurrent calls, CPS requirements, and redundancy goals. Accurate capacity planning helps prevent resource bottlenecks while avoiding unnecessary infrastructure costs.
1. Per-Node Capacity
A properly tuned FreeSWITCH server can support thousands of concurrent calls, but actual capacity depends on factors such as hardware resources, codecs, transcoding requirements, and traffic patterns. For this reason, capacity planning should be based on production testing rather than theoretical estimates.
2. Cluster Sizing
Cluster sizing typically begins by estimating peak concurrent calls and comparing that number against the expected capacity of each node. Additional servers are then added to support future growth and provide failover capacity, ensuring service continuity during maintenance or unexpected outages.
3. Database Connections
Database resources should scale alongside FreeSWITCH infrastructure as traffic volumes increase. As registrations, CDRs, and transactions grow, connection pools must be sized appropriately to prevent the database from becoming a bottleneck, even when application servers have available capacity.
Capacity planning works best when servers, databases, and future growth are sized together rather than independently.
Sizing infrastructure is only part of the equation. Ongoing visibility is what keeps capacity issues from becoming outages.
How to Monitor FreeSWITCH Performance?
Monitoring FreeSWITCH performance helps identify capacity issues before they affect calls and service quality. The most effective approach is to track system health, resource utilization, and traffic patterns continuously.
1. Key Metrics
- Several metrics provide early insight into FreeSWITCH performance.
- Concurrent calls and CPS reveal traffic levels and growth trends.
- CPU, memory, and network utilization show how efficiently resources are being used.
- Registration counts and database activity help identify pressure on supporting infrastructure.
2. Bottleneck Indicators
- Performance bottlenecks often appear before users notice service issues.
- Rising CPU utilization, delayed call setup, and registration failures are common warning signs.
- Packet loss, increased latency, and database slowdowns can also indicate capacity constraints.
- Monitoring these indicators helps teams address issues before they affect production traffic.
3. Alert Thresholds
- Alerting should be configured before resources approach critical levels.
- Waiting until servers reach maximum capacity leaves little time to respond.
- Thresholds for CPU usage, call volume, database activity, and network utilization help detect problems early.
- Well-defined alerts reduce the risk of unexpected service disruptions.
- The best time to identify a bottleneck is before it starts affecting calls.
With monitoring in place, the final step is ensuring every layer of the deployment is prepared for growth.
FreeSWITCH Scalability Checklist
Scaling FreeSWITCH successfully requires more than adding resources to a server. The Kamailio vs FreeSWITCH conversation highlights why traffic distribution becomes essential as call volumes grow.

1. Infrastructure
✓ Size servers based on tested call capacity, not theoretical limits.
✓ Plan for traffic spikes and future growth.
✓ Distribute workloads across multiple FreeSWITCH nodes when needed.
2. Database
✓ Replace SQLite with PostgreSQL for larger deployments.
✓ Size connection pools for peak activity.
✓ Monitor database performance as call volumes increase.
3. SIP Edge Layer
✓ Use Kamailio or OpenSIPS to manage SIP traffic at scale.
✓ Distribute requests across multiple FreeSWITCH servers.
✓ Reduce signaling load on application nodes.
4. Monitoring
✓ Track concurrent calls, CPS, and resource utilization.
✓ Monitor for bottlenecks before users experience issues.
✓ Configure alerts for critical capacity thresholds.
Scaling FreeSWITCH is easier when infrastructure, databases, SIP traffic, and monitoring grow together.
By this point, you’ve seen where FreeSWITCH reaches its limits, how large deployments overcome them, and what it takes to scale with confidence.
The Bottom Line?
Scaling FreeSWITCH is not about finding a bigger server. It is about understanding capacity limits, removing bottlenecks, and building an architecture that can grow with demand.
With the right mix of performance tuning, traffic distribution, database design, and monitoring, FreeSWITCH can support high call volumes while maintaining reliability and call quality.
Growth should reveal opportunity, not infrastructure limits.
At Hire VoIP Developer, we help design, optimize, and scale your FreeSWITCH infrastructure for reliable growth.