010-68421378
sales@cogitosoft.com
当前您所在的位置:首页>新闻中心>新品发布

Wowza Stream Engine 4 的性能调优

发布时间:2020/04/03 浏览量:2186
Wowza Stream Engine 4安装后默认的配置足可以满足开发级性能要求,但远不能满足产品级性能要求!

注意:Wowza Stream Engine 4安装后默认的配置足可以满足开发级性能要求,但远不能满足产品级性能要求!

 

这篇文章阐述了如何在您的硬件环境下进行性能调优。

 

概述

 

从Wowza Streaming Engine™ 4.2.0版本开始,Wowza在安装包中就已经自带了一个版本为8.0的JRE,在安装Wowza Streaming Engine时,它会被自动安装,并被默认地调整到开发模式,你可以通过Java Setting的设置将其调整为产品模式(正式运行环境),如果你对Java性能调优很熟悉,你也可以在Wowza Streaming Engine 管理界面中手动调整各种细节参数。

注:从Wowza Streaming Engine™ 4.7.8版本开始,Wowza已经将JRE升级为9.0.4

 

安装合适的操作系统


首先,无论是Windows系统还是Linux系统,我们建议你尽量使用较新的操作系统版本。
其次,请使用64位操作系统。
最后,这台服务器上除了Wowza Streaming Engine外,尽量不要安装和运行其它无关的程序。

 

对Wowza Streaming Engine做性能调优

 

默认情况下,你可以用下面格式的URL,访问Wowza Streaming Engine Manager的管理界面:

http://[wowza-ip-address]:8088/enginemanager
在Wowza Streaming Engine Manager的管理界面中,点击页面顶部的Server菜单,然后在左侧导航菜单选择Performance Tuning,在Performance Tuning显示了服务器的操作系统,可用的内存,处理器的核心数量,以及Java版本和架构。

Java Settings


在左侧导航菜单点击Java Settings。这个Java Settings界面展现了当前的Java 设置,包括Java Heap Size,这是分配给Wowza Streaming Engine的内存,以及Java Garbage Collection Settings.
 
要改变这些设置,点击Edit

Java Heap Size有三个可选参数,默认参数是Development level。如果是在一个独占的正式运行环境,请为其选择Production level,然后点击Save

当然,你也可以根据需要选择Custom level,然后自己设置一个值。

但是,注意: 目前Wowza的管理界面上对Custom level设置了一个不合理的限制,即最大只能是10GB,如果你要设置更大的Java Heap size,请在Wowza安装目录下conf/tune.xml文件中修改。

另外,JAVA垃圾回收器默认采用G1,这个通常不用做任何调整。当然,如果你非常精通它,你可以试着调整看看。

最后,重启Wowza Streaming Engine,让这些修改生效。

 

Server Thread Pools


在左侧导航菜单点击Server Thread Pools。 Server Thread Pools界面展现了当前的Handler Thread Pool Size 和 Transport Thread Pool Size
 
要改变这些设置,请点击Edit。如果这些设置保留在Set automatically,那么Wowza Streaming Engine 会自己计算Handler Thread Pool Size 和 Transport Thread Pool Size ,计算方式如下:

Handler Thread Pool Size = 60 x Processor Cores

Transport Thread Pool Size = 40 x Processor Cores


但是,注意:Wowza在按上面的公式自动计算Handler Thread Pool Size 和 Transport Thread Pool Size的值时,它假定了你的服务器CPU核数不超过10核(至于为什么要这么假设,可能有其它原因),也就是说超过10核以上,它并没有按上面的 参数设置,所以这时你必须手工修改Server.xml文件来调整性能参数。

此外,在Wowza Streaming Engine Manager的管理界面上设置Handler Thread Pool Size 和 Transport Thread Pool Size时,它们最大不能超过1024。但这只是管理界面上的 限制。你完全可以编辑Server.xml文件来修改它们的值。

注意: Processor Cores 的值显示在Performance Tuning主界面上,如下图所示。

 

 

Virtual Host Processors


点击左侧导航菜单的Virtual Host Processors。在Virtual Host Processors界面展现了在VHost层面处理不同类型的链接的线程数量。
 
要改变这些设置,请点击Edit。当将其保留在Set automatically时,Wowza Streaming Engine将按照如下规则自己计算这个值:

Net Connections Processor Count = 2 x Processor Cores

Media Caster Processor Count = 2 x Processor Cores

Idle Worker Count = 2 x Processor Cores

Unicast Incoming Processor Count = 2 x Processor Cores

Unicast Outgoing Processor Count = 2 x Processor Cores

Multicast Incoming Processor Count = 2 x Processor Cores

Multicast Outgoing Processor Count = 2 x Processor Cores

 

Virtual Host Ports


Virtual Host Ports 界面展现了当前Wowza使用的端口,以及分配给每一个端口的处理线程数量。
 
要改变这些设置,请点击Edit。若将设置保留为Set automatically,那么Wowza Streaming Engine 将按如下方式自己计算线程数量:

Port 1935 Processor Count = 2 x Processor Cores

Port 8086 Processor Count = 2 x Processor Cores

 

Wowza上的一些其它设置

 

对上图中的Client Idle FrequencyRTP Idle Frequency做一个说明,如下:

Client Idle Frequency是一个单位为毫秒的时长,Adobe Flash 播放器RTMP连接的idle时长(我理解是一个超时时长)。对于最基本的VOD点播来说,250毫秒可以提供稳定且性能不错的效果。对于低延时的直播业务来说125到250毫秒是合适的。如果你对低延时不是特别在意(更在意稳定性),Client Idle Frequency可以调整到500,这样可以降低CPU占用率,使得系统可以支撑更多的客户端连接。它的有效值是1到1000。

RTP Idle Frequency是一个单位为毫秒的时长,是RTP连接的idle时长(我理解是一个超时时长). 它的有效值是1到1000。

在非低延时流媒体场景下,并且你在客户端设置了3秒或更多的缓冲(NetStream.bufferTime), 你可以通过修改[install-dir]/conf/VHost.xml文件中以下两个数值来降低服务器上CPU的负担,以处理更多并发连接(sessions):

IdleWorkers/CheckFrequency:100

Client/IdenFrequency:500

·如果你在Linux上遇到多路组播流输入时互相妨碍的问题时,你可能需要将Java属性java.net.preferIPv4Stack 设置为 true。如果要这么做, 请编辑[install-dir]/bin/setenv.sh文件,在清除第13行的注释屏蔽:

JAVA_OPTS="$JAVA_OPTS-Djava.net.preferIPv4Stack=true"

当你在向Adobe Flash 播放传送流媒体时,很重要的第一点是要尽可能的避免使用RTMPT (tunneling version of RTMP)。RTMPT使用了轮询机制,它非常占用CPU资源。我们建议使用一个协议轮转策略,只在需要使用RTMPT时使用RTMPT。

·对于低延时的聊天应用,最好使用较小的socket缓冲(读和写共16000 bytes)。socket缓冲大小设置在[install-dir]/conf/VHost.xml文件中:

 

16000

16000

 

·如果你把不准以上的socket缓冲大小究竟该设置为多少合适,那么最好设置为0:

 

0

0

 

Linux环境下的一些其它的调优措施

 

1、Linux下内存占用问题


修改[wowza-install-location]/bin/setenv.sh文件,在文件最后增加两行:

 

export MALLOC_CHECK_=1

export MALLOC_ARENA_MAX=4

 

2、Linux下IO调度算法


Linux上, 将I/O调度算法(elevator algorithm)调整到Anticipatory elevator (as) 。

3、磁盘挂载问题


Linux上, 挂载(mount)磁盘时采用noatime选项。这个操作在不同的Linux发行版上会有一些不同。
 

Windows环境下的一些其它的调优措施


Windows 7, Server 2003 or 2008上, 最好关闭掉TCP auto tuning。
 

Wowza Streaming Engine 4是目前业界功能最全面、API接口最丰富的流媒体Server产品,采用它作为流媒体服务器产品的案例很多,直播、在线教育、IPTV都有它的用武之地

下一篇:Wolfram|校园版的独特优势(二)
上一篇:AVG Driver Updater:轻松修正及更新设备驱动器

                               

 京ICP备09015132号-996网络文化经营许可证京网文[2017]4225-497号 | 违法和不良信息举报电话:4006561155

                                   © Copyright 2000-2023 北京哲想软件有限公司版权所有 | 地址:北京市海淀区西三环北路50号豪柏大厦C2座11层1105室

                         北京哲想软件集团旗下网站:哲想软件 | 哲想动画

                            华滋生物