How many listeners can your streaming server handle? If you want to deliver stable live audio to a large online audience, you'll want to know the answer. We decided to put RSAS head-to-head with Icecast and SHOUTcast and measure the performance of each, to help broadcasters plan their server deployments and better understand how each streaming server scales.
Which streaming server performs best? Read on!
Test Setup
Before we get into the numbers, here's a breakdown of the test environment. The test hardware consisted of two PCs:
- Client PC: Intel Core 2 Duo E8500, 4 GB DDR2 RAM, Ubuntu 19.10
- Server PC: Intel Core i5-7600K, 32 GB DDR4 RAM, Windows 10, 1903
Both PCs were directly connected via a 40 Gbps copper connection using a pair of Mellanox ConnectX-3 Ethernet cards.
On the client PC, 10 instances of ab
were spawned and connected via HTTP to the server PC, each simulating 1000 concurrent listeners,
for a total of 10,000 listeners. Standard tuning was also applied to each PC to allow them to handle high numbers of network connections (increased socket descriptor limits, etc.).
The server PC was configured with the following software:
- RSAS 0.18.0
- Icecast-KH 2.4.0-kh12
- SHOUTcast 2.6.0.753
These are the latest versions of each application at the time of writing. Each application had a single mount/stream configured with the default minimal configuration. No customization was done.
The server PC was also configured with Rocket Broadcaster 1.3.0 as the encoder, with a single 64 kbps MP3 stream connected to each server for each test. The encoder was connected to RSAS and Icecast using the Icecast2 protocol, and the Shoutcast2 protocol for SHOUTcast.
Benchmark Results
CPU Usage Comparison
With 10,000 listeners connected, RSAS had the lowest CPU usage, beating both Icecast-KH and SHOUTcast. RSAS is currently the fastest streaming audio server on the market, and is almost 20% more efficient than Icecast-KH.
This efficiency translates into a number of advantages for broadcasters. After network bandwidth, CPU usage is the next biggest bottleneck for streaming. A more efficient streaming server means you can serve more listeners with the same hardware. RSAS is also better equipped to handle transient spikes in utilization, such as big jumps in listener counts or drop offs, without disrupting other listeners.
Memory Usage Comparison
In terms of memory usage, each application faired well. Icecast came out on top here, narrowly beating RSAS.
With all of the applications tested, the memory consumption is so low that if you have the CPU power to serve tens of thousands of listeners, you'll definitely have more than enough RAM on your system to handle it. Memory consumption is good to keep an eye on, but will not be a concern for broadcasters.
Going beyond 10K listeners
When we started doing these benchmarks, we initially load tested each application with 30,000 listeners @ 64 kbps, requiring about 2 Gbps of bandwidth. However, we found that SHOUTcast started dropping listeners around the 15,000 mark, and Icecast started dropping listeners around the 12,000 mark. On the same PC, RSAS was able to serve 37,000 listeners simultaneously without dropping listeners. When testing RSAS, the bottleneck was actually the Client PC that was running the 37,000 listener, as we fully saturated its CPU. In other words, 37K wasn't even the limit for RSAS on our Server PC.
To demonstrate this, we ran another test where we ramped up the number of listeners to 18,000 over the course of a few minutes, and measured the number of listeners connected vs. the CPU usage:
In the graphs above, the red line shows how many listeners were reported by each streaming server, as we ramped up 18K listeners over 7 minutes. While RSAS managed to reach 18K listeners and stay stable, Icecast has a meltdown and started dropping thousands of listeners once it hit 12K. Similarly, SHOUTcast started dropping listeners around the 15K mark. The large spikes in Icecast CPU usage indicate a snowball effect, where it temporarily locks up when it is unable to serve listeners anymore.
We limited our earlier CPU and memory usage comparisons to 10K listeners since it's a regime where each application clearly operated normally. Our theory is that poor multithreading performance limits the listener capacity of Icecast and Shoutcast, while RSAS's optimized mulithreading allows it to scale far better.
For a future article, we're working on repeating our testing with an upgraded Client PC and trying to push 10 Gbps of listener traffic. We'd also like to look at performance on Linux, and measuring the stability of each server under load.
The Bottom Line
RSAS comes out on top as the highest performing streaming audio server, allowing broadcasters to serve more listeners than ever before with the same hardware.
Questions about RSAS or planning streaming capacity? Get in touch!