FMS配置小结
官方连接:http://help.adobe.com/en_US/flashmediaserver/configadmin/WS5b3ccc516d4fbf351e63e3d119f2925e64-8000.html
FMS服务器将应用划分为四个层面:Server/Adaptor/Vhost/Applications,Server在最高层,可以包含多个Adaptors,每个Adaptors可以包含多个Vhost,每个Vhost可以包含多个Application,每个Application可以包含多个Instance;
Adaptor可以指定IP和Port,组织Vhost
Vhost类似配置在一台服务器上的多个站点
Application配置每个FMS应用,比如live、vod、livepkgr等
可以复制_defaultRoot_来生成新的Adaptor,此时需要配置新目录下的Adaptor.xml的HostPort的值此时如果要登录admin console来管理新的Adaptor,则需要在原登录名加新Adaptor的名字,比如XXX/fuland539,密码保持不变;也可以复制_defaultVHost_来生成新的Vhost,此时需要配置新目录下的Vhost.xml的AppsDir的值指定Application的目录;
录制视频需要管理缓存,当试图访问一个流内容片段时,服务器会先优先检查缓存,如果缓存存在,那么将把请求指向这个缓冲空间的流来播放,如果缓存不存在,服务器将从存储上请求这个源,并放入缓存,只有从新的缓存给用户播放流;在fms.ini中配置SERVER.FLVCACHE_MAXSIZE,默认是500MBytes,这个数值直接关系到通过服务器能够发布视频流的数量,该设置不会影响到直播,直播流不需要操作服务器缓存
流内容在网络上传输会被分解成数据块,针对RTMP,可以设定其传输数据块的尺寸,数值大会降低服务器的CPU占用,但是会影响带宽接入用户的流畅性,并且数值越大,需要用户有越快的带宽接入;在Application.xml中设置OutChunkSize,默认是4096bytes
某些情况下,服务器会在发送消息前将其聚合,这样可以降低CPU占用,增加服务器性能;在Application.xml中设置AggregateMessages,默认是开启的
在广播一路直播流时,可以进行音频采样整合,但是如果已经打开直播的聚合消息设置,则不能合并音频采样,
需要在fms.ini中配置如下选项:
1)APP.SUBSCRIBERS 超过这个参数数值的用户订阅一路流,音频采样将被合并,默认为8,如果需要提升直播流的性能,可以将值设置为1
2)APP.COMBINESAMPLES_LOCPU 如果CPU占用低于这个值,合并不进行,默认为60,如果需要提升直播流的性能,可以将值设置为1
3)APP.COMBINESAMPLES_HICPU 如果CPU占用高于这个值,进行合并,默认为80,如果需要提升直播流的性能,可以将值设置为1
4)APP.COMBINESAMPLES_MAXSAMPLES 合并几路到一路,默认是4,如果需要提升直播流的性能,可以将值设置为8
某些时候,为了视频流的流畅,需要限制每一个监听器每秒可以接受的最大用户请求,监听器可以在Apaptor.xml的HostPort里进行配置,每个配置的服务器端口用来表示为一个监听器,0或-1表示禁用该功能;可以在Server.xml中配置<RTMP><Edge>下的<MaxConnectionRata>的值,默认是10
某些场景用户在一个应用上长期不进行操作,为了声明这些资源位新的活跃用户可用资源,服务器可以关闭这些空闲连接,此时,客户端会相继收到NetConnection.Connect.Idle和NetConnection.Connect.Colosed,并在服务器端写LOG;可以在Server.xml、Vhost.xml和Application.xml中配置:
<AutoCloseIdleClients enable="true">
<CheckInterval>60</CheckInterval>
<MaxIdleTime>3600</MaxIdleTime>
</AutoCloseIdleClients>
在FMS启动的时候,会开四个进程FMSAdmin、FMSCore、FMSMaster和FMSEdge:
1)FMSAdmin用于支持admin console,管理服务器
2)FMSEdge用于支持Edge服务器的相关工作
3)FMSMaster用于监控,在必要时启动FMSCore进程,只能有一个master,有多个core
4)FMSCore用于实际干活,他的数量受系统内存的大小限制,一般不超过100个
为了配置一个进程的作用域,可以在Application.xml的Scope标签中分配core进程的级别,应用可以单独运行在一个进程中,
也可以与其他应用实例共存于一个实例中,他包括以下选择:
1)adaptor:一个adaptor下的所有实例共用一个进程
2)vhost:在一个vhost下的所有应用共用一个进程,默认值
3)app:在一个应用下的所有实例共用一个进程
4)inst:每个应用实例拥有自己的进程,提供了最好的应用隔离体制,最适合于VOD点播的stateless无状态模式加入<Distribute numprocs="3">inst</Distribute>代表将实例分配给3个core进程,其值不能超过40,并且每个core进程最小内存不能小于100MB,理论3到11最佳,其值为client/vhost/app/inst;还可以加入<MaxCores>来指定core进程的最大数量;还可以加入<RollOver>来指定每个进程运行的时间(s),到一个core到达生命周期,任何新的连接将转向一个新的core进程,到期的进程还继续服务器旧连接,直到连接不关闭,举例:
<Process>
<Scope>app</Scope>
<LifeTime>
<RollOver>3600</RollOver>
<MaxCores>3</MaxCores>
</LifeTime>
.......
</Process>
还有<MaxFailures>标签,代表允许进程失败的最大容忍数量,达到这个数量,core进程将被master进程关闭后重启;当被关闭后,在等到<RecoveryTime>延迟后,master会重启并恢复进程,如果设置为0将不会检查进程失败
Administration Console必须指定一个特别的调试连接来获得播放流及获得共享对象数据,默认是不允许开放这个连接的,需要配置Application.xml:
<Debug>
<MaxPendingDebugConnections>50</MaxPendingDebugConnections>
<AllowDebugDefault>false</AllowDebugDefault>
</Debug>
如果要在Application.xml中加入新属性,需要在JSEngine标签里面创建一个XML标签,属性命名需要响应对应的标签的名字,属性值对应标签的值,举例;
<Application>
<JSEngine>
<config>
<user_name>jdoe</user_name>
<dept_name>engineering</dept_name>
</config>
</JSEngine>
</Application>
这样,从服务器端AS去访问这些属性,使用下面的语法:
application.config.prop_name 或 application.config["prop_name"],比如:
application.config["user_name"] 或 application.config["dept_name"]
通过配置可以让服务器检测客户端带宽,他是通过向客户端发送一系列的数据包来实现的,发送的数据包依次增大;如有必要,可以配置发送数据包的大小、比率以及发送持续时间;在Application.xml中
配置如下:
<BandwidthDetection enabled="true">
<MaxRate>-1</MaxRate>
<DataSize>16384</DataSize>
<MaxWait>2</MaxWait>
</BandwidthDetection>