Adjusting the maximum number of opened files
Legacy settings (before build 5.2.762)
In the launch script
webcallserver that is in subfolder
bin in WCS home folder, for example
By default, this value is set to 20000, but it may be increased if necessary, following the limitations of the operating system used.
Using environment variable (since build 5.2.762)
Since build 5.2.762, maximum opened files limit can be set using the following environment variable
in setenv.sh file. When updating WCS from previous builds, this variable should be added to setenv.sh manually, for example
Unlike the webcallserver startup script, the setenv.sh file is not overwritten on subsequent updates, therefore it is not necessary to restore this setting after every update.
Using service parameter while launching from non-root user (since build 5.2.801)
Since build 5.2.801, WCS is launching from 'flashphoner' user for better security. In this case, maximum opened files limit can be set using service parameters
sudo nano /etc/systemd/system/webcallserver.service
Maximum opened files limit is set with
LimitNOFILE parameter, for example
[Service] User=flashphoner Group=flashphoner LimitNOFILE=100000 ...
Internal command to change file descriptors limit
Since build 5.2.1255 the following command can be used to set file descriptors limit:
sudo ./webcallserver set-fd-limit 100000
WCS will be stopped before settings changing and will be automatically started after settings changing to apply them.
If a new value is less than the default one (20000), erroe message will be displayed, and changes will not be applied.
Traffic encryption in a separate thread for each client session
By default, one CPU thread encrypts medai traffic for all the client sessions. This leads to one CPU core overload by such thread, espacyally on low-power servers, for big subscribers amount. Then, server can not send mediapackets to all subscribers, and streams viewed are degrading, FPS lowering and freezing.
To distribute the load evenly across the CPU cores, it is necessary to enable traffic encryption in a separate thread for each client session with the following parameters
rtp_paced_sender=true rtp_paced_sender_initial_rate=200000 rtp_paced_sender_increase_interval=50 rtp_paced_sender_k_up=0.9
and restart WCS.
Stream distribution optimization
A stream playback quality may drop when a number of subscribers are viewing it simutlaneouly (from 100 and more): low FPS, freezes. However, server capacity and channel bandwidth may be enough. In this case it is recommended to enable multithreaded stream distribution to subscribers using the following parameter
In this case, audio and video client sessions are distributed by groups.
Maximum number of video sessions per group can be set with the following parameter
Maximum number of audio sessions per group can be set with the following parameter
Frame queue size per group and maximum frame waiting time (in milliseconds) are set by the following parameters
for video and
for audio sessions respectively.