Need Server Hardware Advice

swishdaddy

Reputable
Aug 17, 2014
3
0
4,510
Hi! I'm standing up a website that will be serving streaming video (100s) and displaying many images (1000s). The videos range from 5MB to 50MB in size, and the images are anywhere from 2MB to 10MB, realistically. All file uploads are limited to 50MB, so in theory they could all be that big, but probably not.

I expect to have ~ 1000 members, plus another ~3-5000 non-members perusing the site each month, with perhaps up to 1000 people viewing images or videos at the same time. I expect to be streaming dozens to hundreds of streaming videos at any given time using the HTML5 video tag (No Flash).

I know I have to be sure that I have a lot of bandwidth for this, but I am looking for advice concerning the processor, hard drive and RAM. Do you think an i3 processor with 2GB of RAM and 160GB of storage would be sufficient?

I am looking at GoDaddy's Dedicated Server solutions, and the specs above are the cheapest Windows solution. Please note that I am not interested in hearing of other providers, or of using Linux or anything else for the server OS. I simply need to get a handle on what the hardware requirements will be for my site using a Windows 2012 Server OS.

My IT guy says that at minimum I will need the Economy package (i5 processor, 4GB RAM, 300GB Hard Drive), and that even that probably won't be enough. I'm not very techie, so I was hoping I could get a second (or third....etc) opinion.
 
Solution


That's not even close to what you will need.

Streaming is extremely memory and IO intensive. If you expect hundreds of streams at once, you will need several gigabytes of memory for the TCP send windows alone. A TCP send buffer of maximum 10MiB should be sufficient to ensure smooth streaming. This is on a per connection basis though, so if you have 1000 active connections the worst case scenario will require 10GiB of kernel memory just to track the send windows. This is an extreme case, but it is critical that you leave room open for performance tuning. On top of that, you will want to leave an enormous amount of memory available as an OS soft page cache, this will allow your service to load the streaming videos from memory rather than from the hard disk. Disk thrashing will destroy performance!

I would recommend 16GB absolute minimum for a site handling hundreds of concurrent streaming connections.

EDIT: the better solution, by far, is to move the static videos to a CDN and let the CDN handle delivery to customers from local locations which allows for reduced TCP overhead.
 
Solution