1

So there is a WebRTC server I would like to load test to see how many connections I can have to it before its CPU/RAM or network utilization are maxed out. The server is hosted in Microsoft Azure cloud.

Currently, the way to see if the system is working is:

  1. Open a browser, navigate to a web page and start streaming via WebRTC server.
  2. Second party views the stream and ensures it's working.

The problem is when you want to open hundreds/thousands of those connections. I tried load testing it from the office location, however, our bandwidth is fully utilized with 100 viewers.

To overcome the network limitation, I created a test VM in Azure (A4), but its CPU/RAM resources were also exhausted relatively quick, with around 120-130 viewers.

The question is, how do you load test such system, because the hardware requirements make it difficult (Internet connection bandwidth, CPU/RAM)?

Is there a service which could load test WebRTC server?

1

You can use load generators in the cloud. Some tool manufacturers (like Neotys from NeoLoad) but also other partys offer the possibility of hiring load generators in the cloud. Then you only have a controller local and you only have network traffic from controller to load generators. That is a lot less than if you had the load generators on your own network.

0

Though this is old question, I thought of answering it as I am involved with WebRTC load testing tool development.

I am working with load multiplier (supports WebRTC load testing in addition to others), so I may be bit biased.

As I understand, you have a WebRTC server. Currently you are testing using multiple browsers.

If you are looking for open source tools you can look at RestComm or Telestax. Personally I have not used these so I can not comment much on these.

Using load multiplier, you can simulate WebRTC clients (tens of thousands of clients). You can configure for any signalling like SIP over Websocket, JSON over Websocket (one of the preferred way), HTTP/S with JSON body (Janus video demo) or any proprietary text / binary messages etc.

Additionally in WebRTC, ICE (various modes like lite, stun, turn etc), is used to make sure both endpoints are reachable (either end to end or through a turn server). So you can configure ICE details as well.

For media security, typically in most of the cases SRTP / DTLS is used.

And then for audio OPUS, and for video VP8 is used (most preferred ones there).

If you really see, WebRTC call is a resource consuming activity. And if you have hundreds of browser instances to have hundred of WebRTC calls, obviously it will consume more resource, which you have already experienced.

Tools like Load Multiplier, simulate large number of WebRTC clients without bringing up browsers. Load Multiplier uses C / C++ backend to simulate WebRTC clients, and is designed for high scalability. However the front end interface for configuration, test case development, status view, graphs etc is web interface, and you need to bringup only 1 instance of browser (it is negligible from resource usage point of view).

You may like to refer here for more details.

Hope this will help you.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.