Please enable JS

Load Testing Automation of WebRTC Server

Load Testing Automation of WebRTC Server

Most websites and applications  performance may be broken when the server is stressed with a huge number of users. Recently our team faced with the task to set up WebRTC media server and implement video streaming on web portal.  The main reason was to figure out how to connect simultaneously a large number of users with the stream. The only solution was to perform load testing for server performance. Along with analysis of its behavior under load we were able to control the resource usage on the server and find issues which may limit performance(CPU, disk IO, memory or network).In this test we wanted to load test a Wowza origin server itself to see the direct effect of a lot of users on CPU load and RAM usage.

What is Wowza Streaming Engine?

Wowza Streaming Engine Manager is a Java based software and easily deployable on Linux, Mac OS X, Windows, Unix, Solaris. Wowza can stream to multiple devices simultaneously, including the Adobe Flash player, Microsoft Silverlight player, Apple QuickTime Player and iOS devices etc

From the image above you can notice the visual interface to manage all required parameters. Image below shows the workflow process on Wowza Media Server.


List of required tools to implement testing:

  1. Media server: Intel Xeon E3, 4 cores X 8 streams, 16 GB of RAM, 2 TB HDD, 100 MB channel.
  2. Third-party server (to generate client’s connections).
  3. 1 GB port available on both servers.


Step 1. We launched 3 MB video stream on the media server

Step 2. We pushed 7 Docker containers from the second server with deployed Selenium environment (using “docker-selenium- junit-vnc”). To run the video stream in several tabs we implemented the python script.

According to above mentioned reasons you should consider that number of connections and  size of the video stream are two opposite components and may influence on parameters of tested server.

During the workflow process we tested two solutions on different programming languages but chose the Python because of better optimization

Here you can see samples of both on java and python below.




At the end of testing process we came up with the list of several results:

  1. Considering the medium power of Xeon-E3 processors CPU followed 50% level during the testing process.
  2. The RAM was filed on 5 GB of 15 available + 1GB Swap of 2GB available.
  3. Overall number of users reached 290 (3 MB * 1000 MB channel)

We also provided testing for 1000 simultaneous connections (for the lower quality it took approximately 400 KB)

CPU media server parameters


During the testing process we created a working prototype of video stream performance. It gave us opportunity to figure out a real number of visitors to view video at the same time. Having been overloaded both stream and server were still available and performed well. As the conclusion we may finally define the correctly set server’s scope without additional need of being changed.