Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Compared to OpenMeetings 140 users test reducing the CPU value for the Scrypt implementation from 1024 * 8 to 256. 

Test Details

Test run below:

  • 140 users
  • staggered to enter in a time period around 5-10min
  • distributed into
    • 10 conference rooms 4x4 = 40 users

...

    • 5 webinars with

...

    • 21 users each =

...

    • 105 users

...

  • Each test runs calls the API to login/createRoomHash and then load the URL with the room (plus start webcam/audio stream in the conference rooms)

Hardware:

  • 4GB OpenMeetings 1 core
  • 4GB KMS 1 core

Test Results

  • Reduces the login command to perform without any increase. It's completely gone from being a problematic call.
  • However now the StreamProcessor::onMessage shows a curve and sending a single message in this method takes out of sudden almost 1 second. This wasn't previous the case. It seems like we moved the bottleneck to the next level. We speed up the login command but now, because login is much faster, the next method becomes problematic

...

  • There are still lots of video pods not triggering.
  • CPU still spikes to 95%. Same profile

Link to dashboard

Info
I will delete this dashboard shortly again

Test1 - Prometheus Dashboard with metrics 

Test2 - Prometheus Dashboard with metrics

Test3 - Prometheus Dashboard with metrics

Graphs

CPU and memory usage

Login web service call is fine all web service calls are fine

None of the calls take longer than 0.35seconds. That seems okay

...

Previously, because probably login took so long this wasn't such a problem.

Adding Listener takes 2 seconds

Image Added

The method that takes almost 2 sec here is: 

Every broadcast is refreshed - immediately 

On every stream it calls:

  • broadCastStart 
  • broadCastRestart

Image Added

=> What is that good for to restart every single stream by default immediately again ?

onIceCandidate is called 1600 times

During this initialisation for ~50 streams StreamProcessor::onMessage(onIceCandidate) is called 1600 times.

Image Added

=> Is it really necessary to package all those WebSocket calls up in this onIceCandidate ? Can't there be another way for the client to get possible iceCandidates ?

Tomcat threads are better used

...