Healthcare.gov uses Apache server. It failed, here’s why.

Ok, so I was curious and I looked into the headers of healthcare.gov and to my surprise its powered by, err’ Apache and I see NO evidence of accelerators such as Varnish or Nginx. Who could it be, that thought it possible for Apache to serve millions or even hundreds of thousands of visitors per day on a heavy site like this? Also, as explained below the lack of configuring Apache correctly, meant it had no chance!

Here are Healthcare.gov’s main headers:

… the only good news here is, at least gzip is being used.

The next problem, also indicated by the headers, or a lack thereof, is no caching of static files. For example, all of these files (and many others) are missing caching headers:

… this means each of those files have to be repeatedly served by Apache every time a user visits a page, refreshes, etc. When a website lacks caching this becomes even more of a critical issue when there’s programming issues and site errors. It means that as users try to refresh pages and revisit repeatedly because of website errors, that multiplies the load on the server greatly!  For example, with 1 million visitors retrying a “single” page just 2 to 3 times would have resulted in 2 to 3 million requests for “each” static file! A cache TTL setting of even 1 hour could have lowered loads on Apache significantly.

They’re also using the CDN service by Optimizely.com and assets.healthcare.gov is being serving from Akamai. This is fine, but not enough of the assets were being served by these CDNs, as such ultimately there should have been a proxy web server in front of Apache for statics to ensure its not overwhelmed.

I could go a lot deeper into Healthcare.gov’s performance failures but if the basics (improper expectations/demand on Apache, no proxy server, no caching headers for  statics, javascript, CSS and images) are not covered, it gives you an idea of the level of expertise that had to be lacking. Or, we could even discuss benchmarks of Nginx and Varnish vs Apache for statics, yet another topic.

Healthcare.gov uses Apache server. It failed, here’s why. was last modified: January 8th, 2014 by Hayden James
Healthcare.gov uses Apache server. It failed, here’s why.

2 Responses

  1. You know, simply using a free version of CloudFlare seems like it would’ve made a huge difference.

    gavin December 20, 2013 at 8:33 pm #
Trackbacks/Pingbacks
  1. Before the Death Panels…. | COALITION OF THE OBVIOUS - November 5, 2013

    […] Hey buddy, you are in the waiting room. Count your blessings. Once you are enrolled you die.  […]

Leave a Reply