视频服务器上的TCP窗口

视频服务器上的TCP窗口

我正在尝试对我的 HLS 视频服务器的性能进行基准测试。我的服务器目前还很初级:只是一个 NGINX 文件服务器。(HLS 通过将视频拆分成称为“块”的文件来通过 HTTP 传输视频。)每个文件大小约为 256KB,我需要每 2 秒下载一个文件。也就是 1 mbit/s。

我的 AWS 服务器与互联网的连接相当不错。我已将其速度至少设为 2 gbps。

但是,当我测试跨大西洋连接的流媒体传输时,延迟约为 150 毫秒,带宽非常低。我认为这可以归因于 RTT 和 TCP 窗口。我的主要问题是每个连接的带宽低于 1mpbs,而这正是我视频播放所需的质量。

我目前不想投资部署多站点或 CDN,因为我没有很多播放视频的客户端。

我只希望我的客户端能够获得足够的带宽来播放视频。(我的客户端将是 PC、Android 和 iPhone)。

在我看来,这是一个很常见的问题。其他人在这里做什么? CDN 是我唯一的希望吗?我没有很多并发客户端,所以 CDN 对我来说听起来有点小题大做。

答案1

做了一些研究。似乎对于中等大小的文件,传输时间不少于几秒的文件。就 TCP 而言,初始拥塞窗口比拥塞窗口更重要。在 ubuntu 中,您可以更改初始化窗口 值。默认值为 10。通过将其放大到 25,我能够使文件的性能提高 30%。请看这里:http://www.cdnplanet.com/blog/initcwnd-settings-major-cdn-providers/

答案2

你可以将它设置得任意大。你应该将它设置为你的链路的带宽延迟乘积。

回复您在 SO 上对这个问题的评论:客户端根本不“使用”您的发送缓冲区。他们不知道它有多大,而且他们不会“容忍”较大的缓冲区。这种说法是无稽之谈。

相关内容