0

谢谢你们,

我有一个使用WebRTC API开发的视频会议项目,我使用开源 COTURN 构建了自己的 TURN 服务器。根据我的阅读,turn 和 stun 服务器不是 cpu 或内存密集型服务器,但我的 turn 服务器使用8 核ubuntu 服务器的90% 以上cpu,只有100 个客户端。到目前为止,我已经成功地提供了视频会议服务,但现在我将服务于 75000 个客户,恐怕我无法管理这些数字。

这是我的 TURN 服务器配置:

在此处输入图像描述

我错过了什么吗?

在任何情况下coturn(或任何转弯服务器)使用那么多CPU?

4

1 回答 1

1

100 个客户端是否相互连接?像超级会议一样?

在这种情况下,负载如此之大是有道理的。

按照实施 WebRTC 会议的任何常规指南,您可以创建一个所谓的网状拓扑,其中每个连接都针对存在的每个其他客户端进行复制。

让我们为您的案例举一个例子。当您加入通话并且已经有 99 人在场时,您的视频(和音频)将分别为每个客户发送 99 次。所以你的配置是为 100 人创建 100*99/2=4950 个连接!

我建议检查您可以实现的不同拓扑,看看是否符合您的想法并且负载影响较小。

您可能还认为 4950 连接仍然没有那么多,但请记住 WebRTC 即使在没有音频或视频的情况下也会传输,所以它是 4950 连接同时有数据流动。

作为一个著名的例子,Discord 能够处理大量的并发连接,因为它们优化了每个连接中的每一件小事。其中一项优化是当没有媒体流动时它们停止传输数据,您绝对可以实现(需要更多关于 WebRTC 的知识,但并不难)。

如果这是您选择的路径,我建议您更深入地研究 WebRTC,因为您的案例需要更多知识。

于 2020-08-13T04:39:16.567 回答