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.
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:
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.
Java
Python
At the end of testing process we came up with the list of several results:
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.
Since WebRTC is supposed to be for the web, we decided it was time to apply modern web testing methods to figure out how to connect simultaneously a large number of users with the stream.