Video Streaming Server With Multi-Protocol,Robust And Rich API
Location:Index Page  >  Document  >  Performance

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.

3. Test data in various scenarios:

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:


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 streamsCPU usageMem usageAverage load within 5 minutesAverage bitrate of incoming data
50 channels11%~15%0.8%0.2737Mbps
100 channels20%~26%1.3%0.6574Mbps
150 channels31%~39%1.7%0.93112Mbps
200 channels46%~53%2.1%0.95148Mbps
300 channels68%~76%3.2%1.36224Mbps

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 streamsCPU usageMem usageAverage load within 5 minutesAverage bitrate of incoming data
50 channels14%~16%5.6%0.2837Mbps
100 channels25%~31%10.8%0.4974Mbps
150 channels38%~46%16.4%0.99112Mbps
200 channels53%~60%20.9%1.12148Mbps
250 channels68%~76%23.5%1.41186Mbps

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 streamsCPU usageMem usageAverage load within 5 minutesAverage bitrate of incoming data
50 channels50%~54%1.6%0.98200Mbps
70 channels68%~77%1.8%1.22280Mbps

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 streamsCPU usageMem usageAverage load within 5 minutesAverage bitrate of incoming data
50 channels55%~61%23%1.02200Mbps
65 channels72%~77%30%1.26260Mbps


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 streamsCPU usageMem usageAverage load within 5 minutesAverage bitrate of incoming data
50 channels/td>7%~9%0.4%0.3137Mbps
100 channels13%~17%0.6%0.5374Mbps
200 channels30%~33%1.0%1.22148Mbps
300 channels39%~52%1.4%1.54186Mbps
400 channels58%~68%1.8%1.87296Mbps
500 channels69%~79%2.1%2.32370Mbps

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 streamsCPU usageMem usageAverage load within 5 minutesAverage bitrate of incoming data
50 channels8%~11%2.3%0.3537Mbps
100 channels17%~20%5.2%0.6374Mbps
200 channels33%~39%10.4%1.34148Mbps
300 channels48%~57%15.5%1.78186Mbps
400 channels70%~75%23.5%2.25296Mbps
420 channels72%~78%26%2.58315Mbps

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 streamsCPU usageMem usageAverage load within 5 minutesAverage bitrate of incoming data
50 channels32%~35%0.7%0.98200Mbps
70 channels44%~49%0.8%1.23280Mbps
100 channels63%~72%1.1%2.28400Mbps
110 channels71%~78%1.2%2.45440Mbps

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 streamsCPU usageMem usageAverage load within 5 minutesAverage bitrate of incoming data
50 channels36%~39%12.0%0.99200Mbps
70 channels48%~56%15.1%1.34280Mbps
100 channels69%~78%24.0%2.51400Mbps

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.