我想使用法国 OVH 托管的廉价 VPS(1 vCore、2 GB RAM、40 GB SSD NVMe、250 Mbps 无流量限制)来托管将用于本月活动的 icecast 服务器。将有最多 500 个 CCU 收听 128 kbps 音频流。
根据我的阅读本文,在我看来 250 Mbps 应该足以应对负载,但我没有管理此类问题的经验。
我的理由是 128kb*500CCU + 10% 开销 = 大约 70 Mb/s。
我还想知道 OVH 提供的 250 Mbps 无计量流量是否得到保证,或者使用该机器的其他客户托管的其他服务的负载是否会影响性能。(我已经问过 OVH 了,但他们并没有特别的帮助)
谢谢你的见解!samuel
更新
我已经使用上面链接中描述的脚本设置了负载测试场景。
#!/bin/sh
#
# max concurrent curls to kick off
max=600
# how long to sleep between each curl, can be decimal 0.5
delay=1
# how long to stay connected (in seconds)
duration=1800
# url to request from
URL=<theURL>
echo "Start load test"
while /bin/true
do
count=0
while [ $count -le $max ]
do
curl -m $duration --silent --output /dev/null "$URL" &
curl -m $duration --silent --output /dev/null "$URL" &
curl -m $duration --silent --output /dev/null "$URL" &
curl -m $duration --silent --output /dev/null "$URL" &
curl -m $duration --silent --output /dev/null "$URL" &
curl -m $duration --silent --output /dev/null "$URL" &
curl -m $duration --silent --output /dev/null "$URL" &
curl -m $duration --silent --output /dev/null "$URL" &
curl -m $duration --silent --output /dev/null "$URL" &
curl -m $duration --silent --output /dev/null "$URL" &
[ "$delay" != "" ] && sleep $delay
let count=$count+10
echo "Added 10 clients, now at $count clients"
done
wait
done
在 VPS1(“客户端”机器)上启动脚本之前,我在 VPS2(“服务器”机器,icecast2 服务器所在的位置)上的网络接口上打开了一个窗口,使用 slurm 监控网络使用情况,如下所示:
slurm -i eth0
我还打开了一个窗口来监控 icecast 的 CPU 使用情况(在 VPS2 上),如下所示:
top -p <PID OF ICECAST>
并在收听广播流时启动了脚本。一切顺利,我没有听到任何故障,并且 CPU 使用率(600 CCU 时为 6%)非常合理(而且网络使用率比我预期的要低得多,峰值使用率为 17MBs),所以我猜我的设置通过了负载测试!
感谢您的帮助。
答案1
从纯粹的数字来看,这确实足够好了。
实际上,这并不能保证。正如您所提到的,250MBit/s 并不能保证/承诺。此外,不同的 ISP/目的地实际上会有不同的可实现带宽。因为流量将通过各种互连(例如对等互连和上游提供商)退出 OVH。
实际上,最实用的方法是密切关注事态并听取用户反馈。如果您开始在 Icecast 管理界面中看到许多/所有监听器客户端都落后很多,那么这是一个相当常见的拥塞迹象。请注意,由于各种其他原因,某些或少数客户端很可能总是落后,应该可以安全地忽略。
另一种选择通常保留用于大规模专业部署:多台服务器,每台服务器都有专用带宽。