流媒体服务器作为为用户提供服务的基本功能单元,其性能的高低直接影响到流媒体系统的服务能力。在衡量流媒体服务器时,最关键的指标是流输出能力和能同时支持的并发请求数量,下面我们以本地硬盘作为存储介质的流媒体服务器为例,首先对其工作过程进行简单的分析:
(1)从硬盘盘碟中分段读取流媒体文件内容,经过硬盘接口电路(SCSI、IDE)、PCI总线和系统内部总线存储到内存中(途中经过硬盘控制卡和PCI控制器两个转换接口)。
(2)在流媒体文件被发送到网络上之前,CPU需要对内存中的流媒体文件片段进行一些处理,例如,复制、切分、按协议打包等。
(3)打包之后的文件内容在内存中通过系统内部总线、PCI控制器、PCI总线到达网卡。
(4)网卡将文件内容再一次包装后发送到外部网络。
通过以上的分析可以看出,在硬件方面有四个影响到流媒体服务器性能的关键因素:CPU处理能力、内存、磁盘读取能力和网络吞吐率。
(1)CPU处理能力
流媒体服务器的CPU主要进行内容文件的复制、切分和按协议打包等工作,并对用户发起的各种服务请求(如快进、快退、搜索等)进行响应和处理以及服务器列表信息的维护和检索等。
对CPU处理能力的要求,随着需要支持用户并发访问和服务数量的增长而提高,当并发用户数越多,点播的节目越分散,对CPU的处理要求越高。当进行直 播或用户点播单一文件时,服务器为用户提供的内容都是相同的,只需要读取一份源内容,然后进行内容的复制、分发操作;而当用户点播不同的节目时,不仅要进 行内容的分发操作,还需要从多个节目源中取内容,进行更多的磁盘读取和内容读写操作,需要启动更多的进程,每个进程分配的时间片变小,并需要增加更多的进 程切换操作。因此同样配置的服务器,用于直播服务的可以同时为几千个用户服务,但用于点播服务时,则只能为几百个用户提供服务。
另外,在流媒体服务的不同阶段,CPU的负荷也是不同的。在流媒体连接建立初始阶段,除正常的文件复制、切分和协议打包工作外,会有更多的交互请求需 要处理,而且为减少用户等待缓存的时间,有些系统会在短时间内提高文件传输速度,这就导致更多的文件读取和处理工作,要比平稳连接阶段更耗费资源。
(2)对原始数据的读取能力
原始流媒体文件的存放方式主要有本地硬盘、NAS或SAN存储设备几种。不论那种数据存储方式,原始数据文件的读取能力都将直接影 响到服务器的性能。对读取能力的要求,与业务类型和用户请求的数量有很大的关系。直播对于数据读取速率的要求最低,不过它需要为多少用户提供服务,只需从 数据源取一份数据,然后进行复制;但是,点播则需要为每个用户读取不同的数据源,对数据源的读取压力大得多。
原始数据的读取能力是流媒体服务器最大的性能瓶颈,主要是受到存储设备的速度限制。目前主要采用两种解决方法:一是采用Raid技术和磁盘阵列,提高 硬件速度,不过价格较高;另一种方法是采用文件缓存技术,如果几个用户点播同一个节目,就可以从缓存中而不是存储设备中读取数据,减少存储设备压力。不过 这种方法效果有限,随着点播用户请求数的增长,用户点播的节目会越来越分散,在缓存中命中的比例就会逐步降低,当命中率降低到一定程度,起不到减轻存储设 备读取压力的作用。
(3)内存
在流媒体服务器中,内存可以按其用途分为两大部分。一部分是为处理每个用户的流媒体请求和服务使用的内存,用户的平均内存使用率取决于流媒体内容的发 布类型和编码设置,如比特率、包大小、音频流和视频流的数目等。根据用户行为、服务的目标用户数、用户请求连接流的分散率和发布点类型,可以估算出一个流 媒体服务器需要使用多大的内存。
另一部分是用于缓存数据文件。当服务器处理、发送和从存储设备读取数据时,都需要通过内存进行内容缓存。当内存不足时,会出现内存分页现象。内存分页 可能会造成无法预料的延迟。大物理内存可以将因内存分页而产生的延迟最小化,更多的内存可以提供更多的文件缓存,减少存储设备读取能力瓶颈造成的影响,提 高服务器性能。
(4)网络吞吐率
服务器网络接口的服务能力影响到数据的传输,当网络带宽不足时,会导致数据收发延迟,导致用户服务中断。服务器的网络吞吐率只与用户数量和点播节目的编码率有关。
对于一个流媒体服务器来说,以上几个因素中的任何一个都会造成服务器无法正常工作。另外,各个性能因素和处理环节是相互联系、相互影响的。例如当内存 不足时,会产生大量的内存分页操作,同时也会造成CPU的使用率很快上升到100%;增大内存,提高服务器内存缓存能力,还可以降低硬盘读取操作。因此,在进行服务器配置时,要尽量做到各方面的性能协调和匹配,各性能指标均衡,同时应考虑到不同组件的价格不同,比如存储设备价格较高,可相应配置较低的CPU和较大的内存,以提高设备的性价比。
转自:https://www.cnblogs.com/shihao/archive/2011/06/22/2087648.html