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

Cha*_*esS 6 performance hard-drive io performance-tuning

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

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

请注意,无法将视频放入内存中;太多了,而且太大了。分配也不能只在内存中放入几个。

Cho*_*er3 9

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

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

顺便说一下,文件系统更改不太可能让您解决这个问题。