Question

I'm looking at using ImageResizer for a photo sharing app and would appreciate some help with two questions.

  1. What is the recommended Azure instance type (or service) to use? It looks to me like scaling up with large instances would be better than using many small instances, is this a fair assumption? Or would it be recommended to get a memory intensive virtual machine?

  2. Given the recommended Azure setup, how many standard size photo's (say 2M) can we expect to serve each minute (or second or hour...whatever metric is better to use), with and without the use of the DiskCache plugin?

Essentially I want to figure out how many Azure instances I would need to be able to server a million photo's a minute without performance degradation AND what is the ideal Azure setup to get the best performance.

I have read the best practice guide, great info but doesn't really help with answering what is the best Azure setup.

Any guidance is greatly appreciated!

Was it helpful?

Solution

The best setup depends on a lot of factors:

  1. Avg. source image size in bytes. (Increases network bandwidth requirements)
  2. Source image size in megapixels. (Increases RAM requirements).
  3. Result image size in bytes. (Increases disk space requirements)
  4. Source image count. (Increases blob storage requirements, network bandwidth requirements)
  5. Avg. output versions per source image. (Increases cache disk speed and size requirements)
  6. Active vs. archived image sets. What percentage of the image set gets 90% of the traffic? (Affects cache tuning and CDN usage)
  7. What kind of authorization rules need to be applied? DiskCache can do anything, but CDNs can only do expiring links.
  8. What format are the source files and output files in? PNG is 10x slower per megapixel than JPEG - by design. TIFFs can contain any type of compression algorithm - some are fast to decompress, some are algorithmically glacial.

It's not uncommon for network bandwidth to be the bottleneck, especially if you're using blob storage.

I generally recommend starting with 3.75-8GB RAM per instance, and as many web garden instances as available core, then benchmarking.

We do not currently publish benchmarks on virtual instances, as performance is very dependent on what other virtual instances on the same hardware are up to.

AFAIK, none of our users (even those with petabytes of images) have needed to scale out past 3 nodes for speed; usually even those are simply for availability.

The best thing to do is download the software and test it with your data. There are too many variables for a cookie-cutter benchmark to be useful to you, and the only significant cost would be several hours of your time. Installation is typically about 5 minutes, but provisioning VMs can take a while.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top