Janus 负载测试
单台 Krona.Chat 服务器能承载多少观众:Janus 视频服务器负载测试结果。
测试日期:2026年10月10日
各方案的工作方式
混合方案: 模特 → 混合服务器 → 该模特的观众。同一场直播的所有观众都必须容纳在一台服务器上。
分离方案(级联): 模特 → 模特服务器 → 一台或多台观众服务器 → 观众。服务器之间的视频转发(级联)由模特服务器自身完成,无需为此单独配备服务器。当一场直播有大量观众时,他们会被分配到多台观众服务器上。
要点
- 一台服务器可稳定地同时向 330–360 名观众传输视频——不卡顿,画质无损。
- 如果将接收直播的任务移到单独的服务器上,观众服务器可比混合服务器多承载约 10% 的观众,而且一场直播的观众数量不受限制——他们会被分配到多台观众服务器上。
- 接收直播几乎不占用服务器资源。主要负载来自向观众传输视频。
- 服务器几乎能用满网络端口:在 1 Gbit/s 端口上,可无丢失地向观众传输最高 900 Mbit/s 的视频。一旦超出上限,所有观众的画质会同时下降,因此服务器的负载要留有余量——页面底部的计算器正是按此计算的。
测试方法
我们测试的是 Krona.Chat 视频服务器。模特和观众均为行为与浏览器一致的软件客户端:进入直播间,发送和接收视频。
启动直播
模特开始推送约 2.5 Mbit/s 的 1080p 视频——与真实网络摄像头相当。
增加观众
每 2 秒接入一名新观众,负载平稳增长。
监测画质
针对每位观众,统计视频在传输途中的丢失量。只要丢失率低于 1%,画面就是流畅的。
找到上限
当画质开始下降时,测试停止。无丢失时的最大观众数即为服务器容量。
每种方案分别单独测试。图表中的每条曲线都是一次独立测试,曲线之间不能相加。
测试结果
服务器向观众发送的视频量
观众越多,服务器发送的视频就越多。只要曲线平稳上升,每位观众都能完整接收视频。当曲线向下折断时,说明服务器已过载,无法向所有观众传输视频。
显示表格
Mbit/s——服务器每秒向所有观众发送的视频量。绿色边框——画质无损时的最大观众数;红色背景——过载。
观众端的视频质量
未能送达观众的视频所占比例。不超过 1% 时观众察觉不到;超过后画面会卡顿、出现花屏。丢失率急剧上升之处即为服务器的上限。
显示表格
观众端视频丢失率,%。绿色边框——画质无损时的最大观众数;红色背景——过载。
服务器 CPU 负载
CPU 负载始终达不到 100%:服务器会先在视频传输上达到上限。超过上限后,负载甚至会下降——服务器在丢失视频,而不是发送视频。
显示表格
CPU 负载,%。绿色边框——画质无损时的最大观众数;红色背景——过载。
如何选择方案
所有数据均针对约 2.5 Mbit/s 的 1080p 视频,且画质无损。
混合服务器
最多 330 名观众模特及其观众在同一台服务器上。测试中每场直播约有 33 名观众。
适合每场直播观众不超过几百人的情况。如果直播数量多而每场观众少(约 10 人),服务器的承载量会略低——约 280 人。
分离方案
最多 360 名观众模特服务器接收直播,观众服务器负责播放。观众服务器比混合服务器多承载约 10% 的观众。
适合大规模观众:同一场直播的观众会被分配到多台观众服务器上,因此不存在“全部观众必须在同一台服务器上”的限制。
模特服务器
约 220 路直播分离方案的组成部分:接收模特的视频并转发到观众服务器。这项工作负载很轻:120 路直播仅使服务器负载达到 14%。
约 220 是根据实测数据推算的:对这种服务器而言,每路直播就是一路输入视频加一次向下游的转发。
与网站计算器的对比
网站上的服务器计算器按每台服务器向观众传输约 700 Mbit/s 视频来计算。测试表明,配备 1 Gbit/s 端口的服务器可无丢失地传输最高 900 Mbit/s,因此网站上的计算器留有充足余量。
对于 2.5 Mbit/s 的视频,即每台服务器 330–360 名观众。对于码率 3 Mbit/s 的 1080p 视频,按计算约为 290 名观众。
计算器:您需要多少台服务器
采用测试中得出的系数。请输入您的负载以及您所用服务商的服务器价格。
以上结果在测试服务器上获得,可能因服务商、网络和直播设置不同而有所差异。
本报告由 orchestration/capacity_report.py 根据各轮测试数据(Locust + Prometheus + 观众端 RTP 统计)生成。