Giter Club home page Giter Club logo

Comments (10)

bgrozev avatar bgrozev commented on June 29, 2024

Not sure about a proper long-term solution, but a workaround is to use the single-port mode, in which case the portBase value will be (effectively) not used.

from jitsi-videobridge.

jmquigs avatar jmquigs commented on June 29, 2024

Thanks @bgrozev, we'll check out this mode.

from jitsi-videobridge.

fippo avatar fippo commented on June 29, 2024

@bgrozev the last time I looked the single port harvester just added this additional port. Is there a way to disable anything but that port?

from jitsi-videobridge.

bgrozev avatar bgrozev commented on June 29, 2024

@fippo that's pretty much the default behavior actually. The harvester itself only adds a port, but there is logic in the bridge which disables the dynamically allocated candidates if single-port is in use. This way we only use the single port for browsers, but use dynamic ports for endpoints without rtcpmux support (i.e. jigasi).

from jitsi-videobridge.

fippo avatar fippo commented on June 29, 2024

@bgrozev hah, that looks much better than what I remembered. Thanks!

from jitsi-videobridge.

bgrozev avatar bgrozev commented on June 29, 2024

d6610fd provides a fix for a related issue (which may have actually cause what you observed). The TCP and/or "single-port" port were used when updating the value, which resulted in it always staying at "minPort". The race condition is still there, but I believe it is very unlikely to cause any problems in practice.

from jitsi-videobridge.

bgrozev avatar bgrozev commented on June 29, 2024

Closing because no further problems have been reported for over a year. Please reopen if necessary.

from jitsi-videobridge.

jmquigs avatar jmquigs commented on June 29, 2024

We moved to single port mode, which has worked mostly fine for us and doesn't have this port-search issue.

We did have to increase the socket OS receive buffer sizes for the single port harvester. With the default limits, we were saturating these buffers and this led to audio drop outs. The settings we now use are as follows:
sysctl -w net.core.rmem_default=20971520
sysctl -w net.core.rmem_max=33554432
sysctl -w net.core.wmem_default=65536
sysctl -w net.core.wmem_max=33554432

from jitsi-videobridge.

bgrozev avatar bgrozev commented on June 29, 2024

from jitsi-videobridge.

jmquigs avatar jmquigs commented on June 29, 2024

Thanks, thats a good tip. Perhaps it could be added to the official documentation, here: https://github.com/jitsi/jitsi-videobridge/blob/master/doc/single-port.md
I'm not sure what the recommended value would be. We chose 20MB based on empirical tests with bots and how much memory our systems had available.

We've also experimented with a custom modification where we have multiple single port harvesters (i.e one per core), on different ports. The idea being that each SPH can use a smaller buffer size and gets its own IO input thread. However, we've never observed any benefit from that, except for perhaps a small improvement in ice candidate selection (less TCP and more direct and TURN-UDP in an videobridge under load.)

from jitsi-videobridge.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.