We’ve been serving that file from a Nginx webserver running on Amazon EC2 instances. Currently Amazon has 3 EC2 data centers but strangely they are all located on the East Coast of the US (Virginia). Since a lot of our users are international we needed to move that file to a CDN in order to reduce latency.
Less than a month ago we moved that single file off to CacheFly a low-priced CDN. I thought CacheFly would be an interim solution but from our performance testing they seem to be a good longer term option.
For this round of testing I tested the following serving options:
For the next round of tests I’ll add Panther Express to the mix.
Performance testing Amazon S3 is a bit unfair but since so many people are using this as a cheap solution I thought I would test it out myself. The performance tests show that you’re much better serving your static content from a lightweight server like NGINX or using an inexpensive option like CacheFly.
For the performance tests I used Pingdom, a 3rd party performance monitoring service that we’ve been quite happy with.
The monitoring servers were geographically distributed as follows:
CacheFly performed the best but only slightly better than EdgeCast. The S3 option was the worst with the Nginx/DIY option performing just over 100 ms faster.
Below are the details for a single day. I ran these tests for over 2 weeks, the results were identical to this single day.
Nginx on an Amazon EC2 Instance (DIY)
Amazon S3 used as a CDN
I also tested a second DIY option, running a Varnish cache on an Amazon EC2 instance, but for static content Nginx performed much better so I omitted the results.
EdgeCast has an option that allows frequently used content to be served directly from RAM. My trial account did not allow me to test this option. This option would allow for even better performance, possibly matching/beating CacheFly’s performance.
So far we’re sticking with CacheFly and testing a few other options. I’ll post the Panther Express performance after our tests are complete.
Let me know if you’ve found similar results or if I should be testing any other solutions.