Wowza Community

How to determine size of EC2 Wowza Instance?

Hey all.

Is there any way to determine exactly what size instance is needed? Any metrics or gauge?

I’m trying to stream HD video (H.264) for a site and would like it to sample down if the clients connection is to slow. I’m guessing for each video I have I’ll need both an HD version and a low-bandwidth version (Not sure what bandwidth settings I need to set them up with). I’m then assuming I’ll have JW Player figure out the bandwidth and open the correct file. Does this approach sound correct, or is there a better way to do this, perhaps even by using 1 file?

Any help in determining the size, as well as how to approach this is greatly appreciated.

Thanks.

As far as sizing goes we suggest the following total outgoing bitrates for each instance size:

small: 150Mbps

large: 250Mbps

xlarge: 350Mbps

You can certainly do a bitrate test on stream startup and use the appropriate stream based on avaliable bitrate. The BW Check tool is here:

http://www.wowza.com/community/t/-/31

We will support Flash dynamic streaming when Wowza 2.0 is shipping.

Charlie

The main difference to consider for streaming is bandwidth. This seems to be approximately what you can expect.

small: 150mbs

large: 250mbs

x-large: 350mbs

You can use smil file for multi-bitrate delivery, which JW player supports in current version. Requires Wowza Server 2 Advanced:

http://wowza.com/advanced.php

Richard

The AMI you are using is equivalent to Wowza 1.7.2 patch9 (build 12295)

If you want to use Wowza Server 2 on EC2, use one of these AMIs here:

http://www.wowza.com/advanced.php

The numbers posted is the estimated total throughput for these instance types. A single stream should be a small fraction of that. For example, 500kbs, in which case you could have 300 clients subscribing concurrently on a small instance.

You can encode to an optimal bitrate or you can encode 2 or more versions for a range of bitrates, then use bandwidth checking or a multi-bitrate to deliver appropriately. Optimal is about 400-600kbs. You can get a decent h.264 stream in a smaller frame below 200kbs. A higher quality stream might be 800 or 900 kbs. Beyond that there are diminishing returns in resolution and increased chance of buffering in the client. You have to be sure the client can handle the higher bitrate without buffering or it is not worth it.

Richard

Steve,

No, obviously an m1-xlarge with 350mbs bandwidth can’t handle that. You can use a subscription license to run a Cluster GPU Quadruple Extra Large Instance, specs at the bottom of this page:

http://aws.amazon.com/ec2/instance-types/

Richard

Steve,

Bandwidth is the limiting factor for these instance types. The m1-small gets about 150mbs, so if you have a 500kbs live stream, for example, that instance can stream to about 300 clients. The xlarge will handle about 700.

The usual solution is a cluster of m1-small instances (best value per MBS) in a liverepeater (origin/edge) system.

https://www.wowza.com/docs/how-to-configure-a-live-stream-repeater

You will also need a load balancer to distribute connections to your edges

https://www.wowza.com/docs/how-to-get-dynamic-load-balancing-addon

Richard

I said a xlarge could handle 700 500kbs streams, because it has 350mbs bandwidth. 350 / .5 = 700

Richard

The best bet to handle that many users is with an edge/origin repeater setup - the most cost-effective way to scale Wowza on EC2 is edge/origin on small instances (4x small can handle 2.5-3x the traffic of a large for the same money).

-Ian

Also bear in mind that by default, AWS limits you to 20 active instances. However, that limit can be increased simply by asking them to do so and detailing your use case.

The folks at RightScale have a good document laying out all the default limits imposed by Amazon: http://support.rightscale.com/09-Clouds/AWS/01-AWS_Basics/How_do_I_increase_my_AWS_limits_%28EC2,_EBS,_EIP%29%3F

-Ian

Thanks for the information. The current image out there for EC2, does it use Wowza Server 2 advanced? or some other version?

Thanks for all the help

Oh the AMI I used was:

AMI ID: ami-022ac86b

Region: US

Architecture: 32-bit

Instance Size: m1.small

This was taken from http://www.wowza.com/ec2support.html

As far as sizing goes we suggest the following total outgoing bitrates for each instance size:

small: 150Mbps

large: 250Mbps

xlarge: 350Mbps

Charlie the bitrates recommended above are what the videos should be encoded in correct? These are the highest they should go I am assuming. I have a pay per view/purchase video site. I would like to accomodate HD quality videos, but also give low bandwidth users a decent experience.

I would like to identify the highest I should go (HD video), and also what would be good enough for low bandwidth users. I plan on using the small instance for this currently.

Any help here is appreciated!

Thanks.

Did this ever get answered? We’re beta-testing Wowza 3 p4 running on Amazon AWS. If we’re pushing a 2Mbps HD stream in, and have over a thousand users who want to watch in HD (and a few thousand in other modes like Low/Mobile), in my mind that’s a whole lot more data than was mentioned in

small: 150Mbps

large: 250Mbps

xlarge: 350Mbps

Can the XL handle this kind of bandwidth? Can Wowza handle this kind of bandwidth?

Thanks in advance!

Steve

Steve,

No, obviously an m1-xlarge with 350mbs bandwidth can’t handle that. You can use a subscription license to run a Cluster GPU Quadruple Extra Large Instance, specs at the bottom of this page:

http://aws.amazon.com/ec2/instance-types/

Richard

Richard,

Thanks for the speedy reply.

Is there a calculator or “estimator” somewhere that would allow me to enter the number of users of different kinds of bandwidth and tell me what size EC2 server I’d need for Wowza3 to support a broadcast with those numbers?

We build Social Media type websites for a living, and they host hundreds of thousands of users. We’ll be hosting broadcasts where 10,000 attendees aren’t out of the question, although most of them would be watching on Medium/Low bandwidth devices (mobile, iPad) but a “significant” number would likely watch in HD.

I need to build a cost estimation spreadsheet and have the bandwidth part all figured out, want to add in the cost of the servers (and make sure the servers can actually handle that kind of load). I’m fairly sure that the answer is going to be that we’ll have to create a load-balanced cluster, but I’d need to be able to estimate that as well.

Thanks!

Steve

Bandwidth is the limiting factor for these instance types. The m1-small gets about 150mbs, so if you have a 500kbs live stream, for example, that instance can stream to about 300 clients. The xlarge will handle about 700.

<<<<>>>>

Richard,

Thanks! I’m getting closer to understanding how to build a “calculator” to estimate our costs based on your reply. You mentioned that an m1-small gets about 150Mbps and an XL can handle about 700Mbps (even though the original post at the top of this thread said small: 150Mbps; large: 250Mbps; xlarge: 350Mbps.)

So… for the scenarios below, I’m guessing I can get by with an M1.small for scenario 1, m1.xlarge for scenario 2 and 3, then start building clusters to handle the rest.

Do you have similar “handle about nnn Mbps” values for the XXL, XXXXL? And based on what I’m reading in the links you sent, once I get to the Double or Quad XL, I’m better off clustering m1.small’s. Right?

[B][U]Scenario 1 : 100 users[/U][/B] watching a HD upstream video
  (split equally between four different quality streams)
  25 watching HD (720p @ 1.3Mbs)                         32.5Mbps
  25 watching High Resolution (360p @ 850Kbps)           21.3Mbps
  25 watching Medium Resolution (240p @ 350Kbps)          8.8Mbps
  25 watching Low Resolution / Mobile (160p @ 200Kbps)    5.0Mbps
                                             --------------------
                                             Total:      67.5Mbps
[B][U]Scenario 2 : 500 users[/U][/B] 
  125 watching HD (720p @ 1.3Mbs)                       162.5Mbps
  125 watching High Resolution (360p @ 850Kbps)         106.3Mbps
  125 watching Medium Resolution (240p @ 350Kbps)        43.8Mbps
  125 watching Low Resolution / Mobile (160p @ 200Kbps)  25.0Mbps
                                             --------------------
                                             Total:     337.5Mbps
[B][U]Scenario 3 : 1000 users[/U][/B]                                 675.0Mbps
[B][U]Scenario 4 : 5000 users[/U][/B]                                   3.4Gbps
[B][U]Scenario 5 : 10,000 users[/U][/B]                                 6.8Gbps
[B][U]Scenario 6 : 50,000 users [/U][/B]                               33.8Gbps

And yes, we do forsee the possibility of exceeding scenario #6 numbers within a year, so I’ll have to plan for that as well.

TIA for your advice/help!!!

I said a xlarge could handle 700 500kbs streams, because it has 350mbs bandwidth. 350 / .5 = 700

Whoops. My mistake… Sorry… :slight_smile: I saw my mistake just as your reply came in…

Steve

Also bear in mind that by default, AWS limits you to 20 active instances. However, that limit can be increased simply by asking them to do so and detailing your use case.

The folks at RightScale have a good document laying out all the default limits imposed by Amazon: http://support.rightscale.com/09-Clouds/AWS/01-AWS_Basics/How_do_I_increase_my_AWS_limits_%28EC2,_EBS,_EIP%29%3F

Thanks for the info! I appreciate it!