Results 1 to 10 of 10

Thread: wowza 3 tuning

  1. #1

    Default wowza 3 tuning

    Hello. Just installed wowza 3 (perpetual licensed version). We use it for rtmp streaming to flash and mobile streaming. We have a very large number of listeners, it can reach 15000 simultaneous connections. The only problem is that it uses lots of CPU. At about 12000 listeners it stays in 100% usage.
    We have a server with intel xeon cpu E5520 @ 2.27 Ghz (2 processors) with 8 GB of ram and 64-bit windows 2008 server.
    So which is the best way that i can tune wowza to use less cpu load?

  2. #2
    Join Date
    Dec 2007
    Posts
    22,013

    Default

    Have you followed this guide?:

    http://www.wowza.com/forums/content....ormance-Tuning

    Richard

  3. #3

    Default

    i just made some adjustments using the tuning guide. I'll see the cpu usage during the day when the server will be fully loaded and come back with a answer

  4. #4

    Default

    That is a lot of streams for one server. You're probably approaching the limits of the CPU. You might consider upgrading to a server with more CPU cores, or going to a loadbalancer configuration with more servers.

  5. #5

    Default

    well if the settings don`t work maybe we will think about upgrading or even using a loadbalancer. Can you please have a look at my Vhost.xml and tell me if it`s ok with the server specifications from above? Thanks

    <Root>
    	<VHost>
    		<HostPortList>
    			<HostPort>
    				<ProcessorCount>8</ProcessorCount>
    				<IpAddress>*</IpAddress>
    				<!-- Separate multiple ports with commas -->
    				<!-- 80: HTTP, RTMPT -->
    				<!-- 554: RTSP -->
    				<Port>1935,554,443</Port>
    				<SocketConfiguration>
    					<ReuseAddress>true</ReuseAddress>
    					<!-- suggested settings for video on demand applications -->
    					<ReceiveBufferSize>24000</ReceiveBufferSize>
    					<SendBufferSize>65000</SendBufferSize>
    					<!-- suggest settings for low latency chat and video recording 
    
    applications
    					<ReceiveBufferSize>16000</ReceiveBufferSize>
    					<SendBufferSize>16000</SendBufferSize>
    					-->
    					<KeepAlive>true</KeepAlive>
    					<!-- <TrafficClass>0</TrafficClass> -->
    					<!-- <OobInline>false</OobInline> -->
    					<!-- <SoLingerTime>-1</SoLingerTime> -->
    					<!-- <TcpNoDelay>false</TcpNoDelay> -->
    					<AcceptorBackLog>100</AcceptorBackLog>
    				</SocketConfiguration>
    				
    
    <HTTPStreamerAdapterIDs>cupertinostreaming,smoothstreaming,sanjosestreaming,dvrchunkstreaming</HTTPStreamerAd
    
    apterIDs>
    				<HTTPProviders>
    					<HTTPProvider>
    						<BaseClass>com.wowza.wms.http.HTTPCrossdomain</BaseClass>
    						<RequestFilters>*crossdomain.xml</RequestFilters>
    						<AuthenticationMethod>none</AuthenticationMethod>
    					</HTTPProvider>
    					<HTTPProvider>
    						
    
    <BaseClass>com.wowza.wms.http.HTTPClientAccessPolicy</BaseClass>
    						<RequestFilters>*clientaccesspolicy.xml</RequestFilters>
    						<AuthenticationMethod>none</AuthenticationMethod>
    					</HTTPProvider>
    					<HTTPProvider>
    						
    
    <BaseClass>com.wowza.wms.http.HTTPProviderMediaList</BaseClass>
    						
    
    <RequestFilters>*jwplayer.rss|*medialist.smil|*manifest-rtmp.f4m</RequestFilters>
    						<AuthenticationMethod>none</AuthenticationMethod>
    					</HTTPProvider>
    					<HTTPProvider>
    						<BaseClass>com.wowza.wms.http.HTTPServerVersion</BaseClass>
    						<RequestFilters>*</RequestFilters>
    						<AuthenticationMethod>none</AuthenticationMethod>
    					</HTTPProvider>
    				</HTTPProviders>
    			</HostPort>
    			
    			<!-- 443 with SSL -->
    			<!--
    			<HostPort>
    				<ProcessorCount>4</ProcessorCount>
    				<IpAddress>*</IpAddress>
    				<Port>443</Port>
    				<SSLConfig>
    					
    
    <KeyStorePath>${com.wowza.wms.context.VHostConfigHome}/conf/keystore.cert</KeyStorePath>
    					<KeyStorePassword>[password]</KeyStorePassword>
    					<KeyStoreType>JKS</KeyStoreType>
    					<SSLProtocol>TLS</SSLProtocol>
    					<Algorithm>SunX509</Algorithm>
    					<CipherSuites></CipherSuites>
    					<Protocols></Protocols>
    				</SSLConfig>
    				<SocketConfiguration>
    					<ReuseAddress>true</ReuseAddress>
    					<ReceiveBufferSize>24000</ReceiveBufferSize>
    					<SendBufferSize>65000</SendBufferSize>
    					<KeepAlive>true</KeepAlive>
    					<AcceptorBackLog>100</AcceptorBackLog>
    				</SocketConfiguration>
    				
    
    <HTTPStreamerAdapterIDs>cupertinostreaming,smoothstreaming,sanjosestreaming,dvrchunkstreaming</HTTPStreamerAd
    
    apterIDs>
    				<HTTPProviders>
    					<HTTPProvider>
    						<BaseClass>com.wowza.wms.http.HTTPCrossdomain</BaseClass>
    						<RequestFilters>*crossdomain.xml</RequestFilters>
    						<AuthenticationMethod>none</AuthenticationMethod>
    					</HTTPProvider>
    					<HTTPProvider>
    						
    
    <BaseClass>com.wowza.wms.http.HTTPClientAccessPolicy</BaseClass>
    						<RequestFilters>*clientaccesspolicy.xml</RequestFilters>
    						<AuthenticationMethod>none</AuthenticationMethod>
    					</HTTPProvider>
    					<HTTPProvider>
    						
    
    <BaseClass>com.wowza.wms.http.HTTPProviderMediaList</BaseClass>
    						
    
    <RequestFilters>*jwplayer.rss|*medialist.smil|*manifest-rtmp.f4m</RequestFilters>
    						<AuthenticationMethod>none</AuthenticationMethod>
    					</HTTPProvider>
    					<HTTPProvider>
    						<BaseClass>com.wowza.wms.http.HTTPServerVersion</BaseClass>
    						<RequestFilters>*</RequestFilters>
    						<AuthenticationMethod>none</AuthenticationMethod>
    					</HTTPProvider>
    				</HTTPProviders>
    			</HostPort>
    			-->
    			
    			<!-- Admin HostPort -->
    			<HostPort>
    				<ProcessorCount>1</ProcessorCount>
    				<IpAddress>*</IpAddress>
    				<Port>8086</Port>
    				<SocketConfiguration>
    					<ReuseAddress>true</ReuseAddress>
    					<ReceiveBufferSize>16000</ReceiveBufferSize>
    					<SendBufferSize>16000</SendBufferSize>
    					<KeepAlive>true</KeepAlive>
    					<AcceptorBackLog>100</AcceptorBackLog>
    				</SocketConfiguration>
    				<HTTPStreamerAdapterIDs></HTTPStreamerAdapterIDs>
    				<HTTPProviders>
    					<HTTPProvider>
    						
    
    <BaseClass>com.wowza.wms.http.streammanager.HTTPStreamManager</BaseClass>
    						<RequestFilters>streammanager*</RequestFilters>
    						<AuthenticationMethod>admin-digest</AuthenticationMethod>
    					</HTTPProvider>
    					<HTTPProvider>
    						<BaseClass>com.wowza.wms.http.HTTPServerInfoXML</BaseClass>
    						<RequestFilters>serverinfo*</RequestFilters>
    						<AuthenticationMethod>admin-digest</AuthenticationMethod>
    					</HTTPProvider>
    					<HTTPProvider>
    						<BaseClass>com.wowza.wms.http.HTTPConnectionInfo</BaseClass>
    						<RequestFilters>connectioninfo*</RequestFilters>
    						<AuthenticationMethod>admin-digest</AuthenticationMethod>
    					</HTTPProvider>
    					<HTTPProvider>
    						
    
    <BaseClass>com.wowza.wms.http.HTTPConnectionCountsXML</BaseClass>
    						<RequestFilters>connectioncounts*</RequestFilters>
    						<AuthenticationMethod>none</AuthenticationMethod>
    					</HTTPProvider>
    					<HTTPProvider>
    						
    
    <BaseClass>com.wowza.wms.transcoder.httpprovider.HTTPTranscoderThumbnail</BaseClass>
    						<RequestFilters>transcoderthumbnail*</RequestFilters>
    						<AuthenticationMethod>admin-digest</AuthenticationMethod>
    					</HTTPProvider>
    					<HTTPProvider>
    						
    
    <BaseClass>com.wowza.wms.http.HTTPProviderMediaList</BaseClass>
    						<RequestFilters>medialist*</RequestFilters>
    						<AuthenticationMethod>admin-digest</AuthenticationMethod>
    					</HTTPProvider>
    					<HTTPProvider>
    						<BaseClass>com.wowza.wms.http.HTTPServerVersion</BaseClass>
    						<RequestFilters>*</RequestFilters>
    						<AuthenticationMethod>none</AuthenticationMethod>
    					</HTTPProvider>
    				</HTTPProviders>
    			</HostPort>
    		
    		</HostPortList>
    		
    		<HTTPStreamerAdapters>
    			<HTTPStreamerAdapter>
    				<ID>smoothstreaming</ID>
    				<Name>smoothstreaming</Name>
    				<Properties>
    				</Properties>
    			</HTTPStreamerAdapter>
    			<HTTPStreamerAdapter>
    				<ID>cupertinostreaming</ID>
    				<Name>cupertinostreaming</Name>
    				<Properties>
    				</Properties>
    			</HTTPStreamerAdapter>
    			<HTTPStreamerAdapter>
    				<ID>sanjosestreaming</ID>
    				<Name>sanjosestreaming</Name>
    				<Properties>
    				</Properties>
    			</HTTPStreamerAdapter>
    			<HTTPStreamerAdapter>
    				<ID>dvrchunkstreaming</ID>
    				<Name>dvrchunkstreaming</Name>
    				<Properties>
    				</Properties>
    			</HTTPStreamerAdapter>
    		</HTTPStreamerAdapters>
    
    		<HandlerThreadPool>
    			<PoolSize>240</PoolSize>
    		</HandlerThreadPool>
    		<TransportThreadPool>
    			<PoolSize>160</PoolSize>
    		</TransportThreadPool>
    		<IdleWorkers>
    			<WorkerCount>8</WorkerCount>
    			<CheckFrequency>100</CheckFrequency>
    			<MinimumWaitTime>5</MinimumWaitTime>
    		</IdleWorkers>
    		<NetConnections>
    			<ProcessorCount>8</ProcessorCount>
    			<IdleFrequency>500</IdleFrequency>
    			<SocketConfiguration>
    				<ReuseAddress>true</ReuseAddress>
    				<ReceiveBufferSize>65000</ReceiveBufferSize>
    				<SendBufferSize>24000</SendBufferSize>
    				<KeepAlive>true</KeepAlive>
    				<!-- <TrafficClass>0</TrafficClass> -->
    				<!-- <OobInline>false</OobInline> -->
    				<!-- <SoLingerTime>-1</SoLingerTime> -->
    				<!-- <TcpNoDelay>false</TcpNoDelay> -->
    				<AcceptorBackLog>100</AcceptorBackLog>
    			</SocketConfiguration>
    		</NetConnections>
    		<HTTPTunnel>
    			<KeepAliveTimeout>2000</KeepAliveTimeout>
    		</HTTPTunnel>
    		<Client>
    			<ClientTimeout>90000</ClientTimeout>
    			<IdleFrequency>250</IdleFrequency>
    		</Client>
    		<!-- RTP/Authentication/Methods defined in Authentication.xml. Default setup includes; none, 
    
    basic, digest -->
    		<RTP>
    			<IdleFrequency>75</IdleFrequency>
    			<DatagramConfiguration>
    				<Incoming>
    					<ReuseAddress>true</ReuseAddress>
    					<ReceiveBufferSize>1024000</ReceiveBufferSize>
    					<SendBufferSize>65000</SendBufferSize>
    					<!-- <MulticastBindToAddress>true</MulticastBindToAddress> -->
    					<!-- 
    
    <MulticastInterfaceAddress>192.168.1.22</MulticastInterfaceAddress> -->
    					<!-- <TrafficClass>0</TrafficClass> -->
    					<MulticastTimeout>50</MulticastTimeout>
    					<DatagramMaximumPacketSize>4096</DatagramMaximumPacketSize>
    				</Incoming>
    				<Outgoing>
    					<ReuseAddress>true</ReuseAddress>
    					<ReceiveBufferSize>65000</ReceiveBufferSize>
    					<SendBufferSize>65000</SendBufferSize>
    					<!-- <MulticastBindToAddress>true</MulticastBindToAddress> -->
    					<!-- 
    
    <MulticastInterfaceAddress>192.168.1.22</MulticastInterfaceAddress> -->
    					<!-- <TrafficClass>0</TrafficClass> -->
    					<MulticastTimeout>50</MulticastTimeout>
    					<DatagramMaximumPacketSize>4096</DatagramMaximumPacketSize>
    				</Outgoing>
    			</DatagramConfiguration>
    			<UnicastIncoming>
    				<ProcessorCount>4</ProcessorCount>
    			</UnicastIncoming>
    			<UnicastOutgoing>
    				<ProcessorCount>8</ProcessorCount>
    			</UnicastOutgoing>
    			<MulticastIncoming>
    				<ProcessorCount>4</ProcessorCount>
    			</MulticastIncoming>
    			<MulticastOutgoing>
    				<ProcessorCount>4</ProcessorCount>
    			</MulticastOutgoing>
    		</RTP>
    		<Application>
    			<ApplicationTimeout>60000</ApplicationTimeout>
    			<PingTimeout>12000</PingTimeout>
    			<ValidationFrequency>20000</ValidationFrequency>
    			<MaximumPendingWriteBytes>0</MaximumPendingWriteBytes>
    			<MaximumSetBufferTime>60000</MaximumSetBufferTime>
    		</Application>
    		<StartStartupStreams>true</StartStartupStreams>
    		<!-- Properties defined here will be added to the IVHost.getProperties() collection -->
    		<Properties>
    		</Properties>
    	</VHost>
    </Root>

  6. #6
    Join Date
    May 2011
    Posts
    455

    Default

    Yes, this looks OK for testing with your tuned server. As Randall said, that's a lot of streams for one server.

    -Lisa

  7. #7

    Default

    Your best bet may be to break that in to two different boxes. That said, here are a couple of quick and inexpensive things you can try:

    1 - Reduce the number of processors allowed to do garbage collection. Add the following to your setenv file
    -XX:ParallelCMSThreads=4 -XX:ParallelGCThreads=4
    . That will only allow the garbage collector to use 4 cores. If you want to play a bit, try turning that down to 1 or 2.

    2 - Add more RAM. Memory is cheaper than your processor and it will allow you to dump more of the streaming process in to RAM before you have to collect. I personally suggest running a system with 12GB of RAM and then set Wowza to use 8GB. That would be done in your setenv file with the following
    -Xmx8000M -Xms8000M -XX:+AlwaysPreTouch

  8. #8

    Default

    thank you guys. Using the tuning tutorial and Bencredible`s advice, the CPU is now running at about 70% with 15000 clients. But still it`s a good ideea to make some upgrades to the server.

  9. #9

    Default

    bizkit1,

    Could you describe what type of streams you are streaming? Codec, bitrate, etc? I assume these are audio only streams? Thanks.

  10. #10

    Default

    i`m restreaming a couple of shoutcast servers aac+ @ 48 kbps. Yes only audio

Similar Threads

  1. Wowza Tuning after upgrade
    By ealarcong in forum Performance Tuning Discussion
    Replies: 4
    Last Post: 11-27-2013, 10:00 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •