充分利用Centos的内存分区缓解磁盘IO瓶颈
应用场景:Centos+SRS(hls/rtmp)+Nginx(VOD),单服。
随着访问量加大,视频直播、点播服务卡滞现像越来越突出。调整各项参数均无作用。也是机缘所致,稍早前在SRS群里提出这个问题后,明月宗师指出应该把HLS的文件写入到内存中,而不是在硬盘上存取。四野宗师亦表示支持。
于是:
vi /usr/local/srs/conf/srs.conf
修改hls录制路径如下:
vhost __defaultVhost__ {
hls {
enabled on;
hls_path /dev/shm;
hls_fragment 10;
hls_window 60;
}
}
同时对nginx中hls对应主机头路径修改一致。
经过如上处理,该服务器直播点播卡滞现像消失。由于单服性能极限,随着访问量加大,卡滞情况仍将出现,但系统容量确实得到极大提升。
http://www.lijiangtv.com/data/attachment/album/201502/01/193829k3qj2hsqqdvsjmum.jpg
分析:硬盘的读写速率是有限的,如鄙人所用的未配置raid单机,在centos下写入速度在60-80M左右;组建了RAID10的写入速度在160M左右。该服务器不仅提供hls直播,在某些时段还作了计划任务录制两路rtmp流,同时还要提供VOD点播。这样一来一旦用户多起来,硬盘的这点IO能力自然是不够的。rtmp直播流会卡,看起来与硬盘IO没有关系,然而不顺畅的IO环境,会占用更多CPU时间,从而导致系统整体效能恶化。
而内存分区的读写速度达到600M以上。Centos等linux系统在安装时均已按物理内存之二分之一的容量划分并挂载了内存分区(如上图),确实应该妥善使用,把一些需要高速存取的数据放到这个分区。
其他:明月宗师认为,应该考虑单独挂载内存分区,用于存放需要保留的数据,因为一旦重起机器,tmpfs的数据就会被清除。但鄙人项目中hls只是用于一次性提供移动端直播服务,不需要保留其数据,因而未作相关尝试。
原址 http://www.lijiangtv.com/home/1-10851.html
虽然只是两行配置的事,但确实是非常大的改变!感谢SRS群的各位大侠,以及所有乐于分享智慧的小伙伴们。
页:
[1]