- Overview
- License
- Architecture
- System
- Performance
- Install
- Upgrade
- Uninstall
- Release Note
- Web Panel
- Config File
- Process
- Startup
- Shutdown
- Port
- Troubleshooting
- RTMP Push
- SRT Push
- SRT Pull
- UDP Push
- UDP Broadcast
- Source Stream
- Pull Stream
- Playback
- Forward
- SSL
- Snapshot
- UDP packet
- Record & NVR
- VOD
- GB28181
- WebRTC
- API
- Compare to Wowza
Our technical team has conducted rigorous testing on the performance of Ti Top Streamer, resulting in test data for various hardware conditions and scenarios.
1. First, let me introduce the basic conclusion:
Ti Top Streamer is a high-performance, reliable, and stable streaming server software product that can meet the business needs of various high concurrency, 2K, 4K, and other scenarios, with extremely low physical memory usage.
Notes:After our comparative testing, the performance of Ti Top Streamer in CPU resource utilization is slightly inferior to SRS 3.0. Mainly because Ti Top Streamer has more business logic processing and related management functions. After all, Ti Top Streamer is a commercial product directly aimed at commercial customers.Just take a look at our management Web UI and SRS Web UI to understand this.
2. How did we test it?
The answer is :Test Ti Top Streamer with Ti Top Streamer! In addition, some nodejs scripting tools were used as supplements.Here, A little explanation for this:
Ti Top Streamer has rich HTTP APIs that can be used to create large concurrent tasks. For a simple example, if testing 500 rtmp streams pushed to Ti Top Streamer, you only need to use the API to create 500 forwarding tasks for another Ti Top Streamer,
The destination address for forwarding is the Ti Top Streamer you are currently testing!
The scripting tools that call these APIs can be implemented in any language, and we use the nodejs language. It's very simple. Basically, testing in a scenario can be completed with just 100 lines of node.js code.
We know that streaming media servers have various different application scenarios. In different scenarios, different business processes and configuration parameters will inevitably affect the test results. For example, whether to enable HLS slicing and the length of the segment will affect CPU and memory usage, and the bitrate of the video stream will also affect CPU and memory usage.
So, first of all, we need to distinguish the technical scenarios for testing:
- 1. Test the receiving ability for RTMP streams
- 2. Test the output capability for RTMP streams
- 3. Test the output capability for HLS and FLV streams
There are two ways to input an RTMP stream: 1) the external system initiates the flow and pushes it to the Ti Top Streamer using the RTMP protocol. 2) Ti Top Streamer initiates actively and pulls the RTMP stream externally based on an RTMP URL.
Is the consumption of CPU and memory the same under these two methods? Yes. After testing, the two are almost identical, with a difference of only about 1%, which can be ignored. The reason is also simple, because their difference is only that the signaling initiator is different (limited to the first second after the start of the test), Reception of media streams are exactly the same.
In this scenario, we tested several scenarios with and without HLS memory slicing enabled, as well as 750Kbps and 4Mbps bitrates:
Let's first take a look at the test result under the minimum hardware configuration (2-core 4G memory), as shown in the table below:
Hardware configuration: Ali Cloud ecs.sn1ne.large (2cores Intel 2.5GHz 4G Memery 1Gbps bandwidth) CentOS7.4 64bit system | ||||
Test objective: To verify the number of concurrent RTMP input streams supported by Ti Top Streamer | ||||
Testing method: Simultaneously push rtmp stream to Ti Top Streamer, testing time: 5 minutes | ||||
Enable HLS memory slicing: No | ||||
Encoding parameters: 750Kbps 512*288 H.264/AAC | ||||
Quantity of input streams | CPU usage | Mem usage | Average load within 5 minutes | Average bitrate of incoming data |
50 channels | 11%~15% | 0.8% | 0.27 | 37Mbps |
100 channels | 20%~26% | 1.3% | 0.65 | 74Mbps |
150 channels | 31%~39% | 1.7% | 0.93 | 112Mbps |
200 channels | 46%~53% | 2.1% | 0.95 | 148Mbps |
300 channels | 68%~76% | 3.2% | 1.36 | 224Mbps |
Notes: In all of our test data, the CPU usage will not exceed 80%, That is to say, in order to obtain stable and reliable operating data, we do not consider situations where CPU usage exceeds 80%. All test data in this article have adopted this principle, which will not be further elaborated below.
Next, let's take a look at how much resource usage will increase after enabling HLS memory slicing?
Hardwar configuration: Ali Cloud ecs.sn1ne.large (2cores Intel 2.5GHz 4G Memery 1Gbps bandwidth) CentOS7.4 64bit system | ||||
Test objective: To verify the number of concurrent RTMP input streams supported by Ti Top Streamer | ||||
Testing method: Simultaneously push rtmp stream to Ti Top Streamer, testing time: 5 minutes | ||||
Enable HLS memory slicing: Yes (maximum slicing time 4 seconds, keeping the last 3 slices in memory) | ||||
Encoding parameters: 750Kbps 512*288 H.264/AAC | ||||
Quantity of input streams | CPU usage | Mem usage | Average load within 5 minutes | Average bitrate of incoming data |
50 channels | 14%~16% | 5.6% | 0.28 | 37Mbps |
100 channels | 25%~31% | 10.8% | 0.49 | 74Mbps |
150 channels | 38%~46% | 16.4% | 0.99 | 112Mbps |
200 channels | 53%~60% | 20.9% | 1.12 | 148Mbps |
250 channels | 68%~76% | 23.5% | 1.41 | 186Mbps |
Notes:Ti Top Streamer adopts Cache technology in memory usage, That is to say, a cache range will be dynamically defined based on the actual usage of memory at the business level, The memory data above is actually the size of this cache, and the actual memory used at the business level is less than half of it. And the size of the cache will be dynamically adjusted according to the business situation.
Next, let's take a look at the average video bitrate of 4Mbps (also disable HLS memory slicing first), as follows:
Hardwar configuration:Ali Cloud ecs.sn1ne.large (2cores Intel 2.5GHz 4G Memery 1Gbps bandwidth) CentOS7.4 64bit system | ||||
Test objective: To verify the number of concurrent RTMP input streams supported by Ti Top Streamer | ||||
Testing method: Simultaneously push rtmp stream to Ti Top Streamer, testing time: 5 minutes | ||||
Enable HLS memory slicing: No | ||||
Encoding parameters: 4Mbps 1920*1080 H.264/AAC | ||||
Quantity of input streams | CPU usage | Mem usage | Average load within 5 minutes | Average bitrate of incoming data |
50 channels | 50%~54% | 1.6% | 0.98 | 200Mbps |
70 channels | 68%~77% | 1.8% | 1.22 | 280Mbps |
Next, let's take a look at how much resource usage will increase after enabling HLS memory slicing?
Hardwar configuration: Ali Cloud ecs.sn1ne.large (2cores Intel 2.5GHz 4G Memery 1Gbps Bandwidth) CentOS7.4 64bit system | ||||
Test objective: To verify the number of concurrent RTMP input streams supported by Ti Top Streamer | ||||
Testing method: Simultaneously push rtmp stream to Ti Top Streamer, testing time: 5 minutes | ||||
Enable HLS memory slicing: Yes (maximum slicing time 4 seconds, keeping the last 3 slices in memory) | ||||
Encoding parameters: 4Mbps 1920*1080 H.264/AAC | ||||
Quantity of input streams | CPU usage | Mem usage | Average load within 5 minutes | Average bitrate of incoming data |
50 channels | 55%~61% | 23% | 1.02 | 200Mbps |
65 channels | 72%~77% | 30% | 1.26 | 260Mbps |
From the above data, it can be seen that the performance of Ti Top Streamer is still excellent at the lowest hardware configuration (2-core 4GB memory)
Next, we will double the hardware configuration (4-core 8GB memory) and perform the same test to see how the Ti Top Streamer performs :
Hardwar configuration:Ali Cloud ecs.sn1.large (4cores Intel 2.5GHz 8G Memery 1Gbps Bandwidth) CentOS7.4 64bit system | ||||
Test objective: To verify the number of concurrent RTMP input streams supported by Ti Top Streamer | ||||
Testing method: Simultaneously push rtmp stream to Ti Top Streamer, testing time: 5 minutes | ||||
Enable HLS memory slicing: No | ||||
Encoding parameters: 750Kbps 512*288 H.264/AAC | ||||
Quantity of input streams | CPU usage | Mem usage | Average load within 5 minutes | Average bitrate of incoming data |
50 channels/td> | 7%~9% | 0.4% | 0.31 | 37Mbps |
100 channels | 13%~17% | 0.6% | 0.53 | 74Mbps |
200 channels | 30%~33% | 1.0% | 1.22 | 148Mbps |
300 channels | 39%~52% | 1.4% | 1.54 | 186Mbps |
400 channels | 58%~68% | 1.8% | 1.87 | 296Mbps |
500 channels | 69%~79% | 2.1% | 2.32 | 370Mbps |
Next, let's take a look at how much resource usage will increase after enabling HLS memory slicing?
Hardware configuration: Ali Cloud ecs.sn1.large (4cores Intel 2.5GHz 8G Memery 1Gbps Bandwidth) CentOS7.4 64bit system | ||||
Test objective: To verify the number of concurrent RTMP input streams supported by Ti Top Streamer | ||||
Testing method: Simultaneously push rtmp stream to Ti Top Streamer, testing time: 5 minutes | ||||
Enable HLS memory slicing: Yes (maximum slicing time 4 seconds, keeping the last 3 slices in memory) | ||||
Encoding parameters: 750Kbps 512*288 H.264/AAC | ||||
Quantity of input streams | CPU usage | Mem usage | Average load within 5 minutes | Average bitrate of incoming data |
50 channels | 8%~11% | 2.3% | 0.35 | 37Mbps |
100 channels | 17%~20% | 5.2% | 0.63 | 74Mbps |
200 channels | 33%~39% | 10.4% | 1.34 | 148Mbps |
300 channels | 48%~57% | 15.5% | 1.78 | 186Mbps |
400 channels | 70%~75% | 23.5% | 2.25 | 296Mbps |
420 channels | 72%~78% | 26% | 2.58 | 315Mbps |
Next, let's take a look at the average video bitrate of 4Mbps (also disable HLS memory slicing first), as follows:
Hardwar configuration:Ali Cloud ecs.sn1.large (4cores Intel 2.5GHz 8G Memery 1Gbps Bandwidth) CentOS7.4 64bit system | ||||
Test objective: To verify the number of concurrent RTMP input streams supported by Ti Top Streamer | ||||
Testing method: Simultaneously push rtmp stream to Ti Top Streamer, testing time: 5 minutes | ||||
Enable HLS memory slicing: No | ||||
Encoding parameters: 4Mbps 1920*1080 H.264/AAC | ||||
Quantity of input streams | CPU usage | Mem usage | Average load within 5 minutes | Average bitrate of incoming data |
50 channels | 32%~35% | 0.7% | 0.98 | 200Mbps |
70 channels | 44%~49% | 0.8% | 1.23 | 280Mbps |
100 channels | 63%~72% | 1.1% | 2.28 | 400Mbps |
110 channels | 71%~78% | 1.2% | 2.45 | 440Mbps |
Next, let's take a look at how much resource usage will increase after enabling HLS memory slicing?
Hardwar configuration:Ali Cloud ecs.sn1.large (4 cores Intel 2.5GHz 8G Memery 1Gbps Bandwidth) CentOS7.4 64bit system | ||||
Test objective: To verify the number of concurrent RTMP input streams supported by Ti Top Streamer | ||||
Testing method: Simultaneously push rtmp stream to Ti Top Streamer, testing time: 5 minutes | ||||
Enable HLS memory slicing: Yes (maximum slicing time 4 seconds, keeping the last 3 slices in memory) | ||||
Encoding parameters: 4Mbps 1920*1080 H.264/AAC | ||||
Quantity of input streams | CPU usage | Mem usage | Average load within 5 minutes | Average bitrate of incoming data |
50 channels | 36%~39% | 12.0% | 0.99 | 200Mbps |
70 channels | 48%~56% | 15.1% | 1.34 | 280Mbps |
100 channels | 69%~78% | 24.0% | 2.51 | 400Mbps |
Above, we have completed the testing of RTMP input, and under the most common lower hardware configuration (4-core 8G memory), the performance of Ti Top Streamer has reached the industry's first-class level!
We have also summarized some patterns:
1). Enabling HLS memory slicing does significantly increase memory usage, as slicing data needs to be saved in memory. But compared to our common large memory servers, this memory usage is negligible.
2). When the video bitrate increases, the CPU usage will increase, but the magnitude of the increase is limited. From 750kbps to 4Mbps, the CPU usage has only increased by less than 10% from the original level.
3). After the hardware configuration of the server is doubled, the supported business volume will not increase by double, but only by about 0.8 times. This situation can also be understood as a normal situation.