Skip to end of metadata
Go to start of metadata

Configuring an Ubuntu server

1. Install Xvfb, Xorg to work with a virtual output device

apt-get install xvfb -y
apt-get install x11-xkb-utils xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic  xserver-xorg-core  xserver-xorg-video-dummy alsa-base -y

2. Install a dummy sound card (this step may be skipped in Ubuntu 20.04 and newer)

apt-get install linux-image-extra-4.4.0-62-generic -y
modprobe snd-dummy

3. Configure a virtual video device: edit the configuration file/usr/share/X11/xorg.conf.d/xorg.conf

Section "Device"
    Identifier  "Configured Video Device"
    Driver      "dummy"
    Option "ConstantDPI" "true"
    VideoRam 192000
EndSection

Section "Monitor"
    Identifier  "Configured Monitor"
    HorizSync 31.5-48.5
    VertRefresh 50-70
    Modeline "1600x1200" 22.04 1600 1632 1712 1744 1200 1229 1231 1261
    Modeline "1600x900" 33.92 1600 1632 1760 1792 900 921 924 946
    Modeline "1440x900" 30.66 1440 1472 1584 1616 900 921 924 946
    ModeLine "1366x768" 72.00 1366 1414 1446 1494  768 771 777 803
    Modeline "1280x1024" 31.50 1280 1312 1424 1456 1024 1048 1052 1076
    Modeline "1280x800" 24.15 1280 1312 1400 1432 800 819 822 841
    Modeline "1280x768" 23.11 1280 1312 1392 1424 768 786 789 807
    Modeline "1360x768" 24.49 1360 1392 1480 1512 768 786 789 807
    Modeline "1024x768" 18.71 1024 1056 1120 1152 768 786 789 807
    Modeline "768x1024" 19.50 768 800 872 904 1024 1048 1052 1076
EndSection

Section "Screen"
    Identifier  "Default Screen"
    Monitor     "Configured Monitor"
    Device      "Configured Video Device"
    DefaultDepth 24
    SubSection "Display"
        Depth 24
        Modes "1600x1200" "1680x1050" "1600x900" "1400x1050" "1440x900" "1280x1024" "1366x768" "1280x800" "1024x768"
    EndSubSection
EndSection

Section "ServerFlags"
    Option "MaxClients" "2048"
EndSection

4. Install Apache and set up SSL, if you plan to place a player test page on the same server

apt-get install apache2

5. Install Chrome

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list
apt-get update
apt-get install google-chrome-stable

Scripts for load testing

A gz file with scripts to perform load testing can be downloaded here.

The archive contains

  • the player directory containing Web player scripts
  • start_xorg.sh - the script to start Xorg
  • loadtest.sh - the script to start tests

Scripts of the player must be available from the Apache HTML directory: place the player directory to, for example /var/www/html/tests/player.
The player.html test page accepts parameters. For example:

http://<server IP>/tests/player/player.html?streamName=test&autoplay=true

The following parameters are supported

  • stream name: streamName=test
  • autoplay: autoplay=true
  • resolution: resolution=640x480 (in this case, transcoding will be enabled on WCS server, that inscreases server CPU load)
  • media playback technology: mediaProvider=WebRTC,MSE

You can also use Embed Player page directly from WCS server to test:

https://wcs:8888/embed_player?urlServer=wss://wcs:8443&streamName=test&mediaProviders=WebRTC&autoplay=true

The loadtest.sh script can accept the following parameters:

manadtory

  • url - the URL of the player page with all parameters - or
  • urlsfile - the path to a file that contains multiple such URL that will be used one by one

optional

  • stressrate - time interval of adding a new subscriber, in milliseconds
  • ttl - lifetime of a subscriber in seconds
  • maxsubscribers - maximum number of subscribers

Running tests

1. Start Xorg

./start_xorg.sh

2. Increase a maximum opened files system limit

ulimit -n 1000000

3. Start loadtest.sh with chosen parameters

For example,

./loadtest.sh -url https://wcs:8888/embed_player?urlServer=wss://wcs:8443&streamName=test&mediaProviders=WebRTC&autoplay=true -maxsubscribers 50 -stressrate 1000 -ttl=300

or

./loadtest.sh -urlsfile urls.txt -stressrate 1000 -ttl 300 -maxsubscribers 50