如何防止Linux下视频服务的IO负载?

如何防止Linux下视频服务的IO负载?

我目前在 3 台服务器上通过 Nginx 提供会议视频;4 个核心、足够的内存(未使用交换)和 RAID-10,每台服务器有 8 个驱动器。不幸的是,iostat -xd 1 在所有 3 台服务器上都显示 100%,而 iotop 显示 Nginx 占用了 99-100%。

我一直在考虑分布式 FS(但是哪一个会有帮助?);除了购买新服务器(涉及所有开销......)之外,还有其他方法可以防止这种情况发生吗?

注意,内存中不可能容纳所有视频;视频太多,太大。分配也不好,只能将少数视频放入内存中。

答案1

我的工作是构建大型(> 100 万用户)商业 VoD 系统,除非您可以使用多播/任播并且不使用 CDN,否则您只有一个选择,那就是扩展您的存储系统和网络以处理您需要的最大并发 IO 负载。

当然,正如您所提到的,本地缓存可以有所帮助,但我总是将我们的流媒体大小设置为零缓存。显然,我们的用例会有所不同,但如果您的视频目录相对较小,您可以考虑将内容放在基于 SSD 的卷和/或基于 PCIe 的闪存存储上,例如 FusionIO 套件(现在还有其他制造商生产这种产品,但由于 FIO 是第一个进入该领域的,因此它们是我最了解和最信任的)。当我们构建第一个此类重要平台时,我们最终使用了数万个 72GB 2.5 英寸 SAS 磁盘,以确保我们拥有足够的随机读取能力,因为这才是您所需要的,逻辑上说您会更关心顺序性能,因为视频内容只是大文件,但是当有这么多人从不同的起点播放不同的视频时,这种类型的缓存几乎就不适用了,您需要获得最佳的随机读取性能。确保从磁盘到网络端口的路径也尽可能高效也很重要,除了了解磁盘/控制器/总线/NIC 和驱动程序之外,没有简单的方法可以优化这一点。

顺便说一句,文件系统的改变不太可能帮助您解决这个问题。

相关内容