使用太多CPU的COTURN !!这正常吗?

问题描述

谢谢大家

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

这是我的TURN服务器配置:

enter image description here

我想念什么吗?

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

解决方法

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

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

按照有关实施WebRTC会议的任何常规指南,您将创建一个mesh topology,在其中为存在的每个其他客户端复制每个连接。

让我们举例说明您的情况。当您加入呼叫时,已经有99个人出席,您的视频(和音频)将分别为每个客户端发送99次。 因此,您的配置正在为100个人创建100 * 99/2 = 4950个连接!

我建议您检查一下可以实施的different topologies,看看是否适合您的想法并且对负载的影响较小。

您可能还认为4950连接数量还不多,但是请记住,即使没有音频或视频,WebRTC也会进行传输,因此4950连接同时具有数据流。

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

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...