|By Gregory Speckhart||
|March 10, 2014 03:30 PM EDT||
In a previous post, we discussed why GoDaddy could sustain the peak load after its Super Bowl Ad campaign aired and why others like Kia wasted a lot of marketing money because its site availability dropped under the load. In this post, we will look at the technical details behind the impact of oversized pages, and how that may have been averted by kia.com.
Lesson #1: Bloated Pages Will Kill Your Web Servers
Previously, I noted availability issues occurred for Kia during game time. The Kia team broke an important performance rule - large number of bytes transferred.
First, let's look at the anatomy of an American football fumble- play in motion, ball fumbled, pile-up ensues until possession is determined, then play is recovered or turned over.
Now, let's look at the anatomy of a heavy web page otherwise delivered successfully under normal load. First, heavy traffic volume begins. A connection pile-up ensues by putting massive campaign-based load on front-end. Front-end tipping point reached when established connections cannot complete bytes in motion faster than new connections are requested. Eventually, timeouts occur for new connections after 60 second inactivity, and the web site is barely in motion.
1. Heavy Traffic volume begins, 2. Connection pile-up, 3. Timeouts occur, and 4. eventually availability drops.
Kia's page was just over 20.1MB, and ranked 51 out of the 53 advertisers for heaviest byte count. Its tools should have made this fact obvious, unless it was deliberate. Either way, soon after its third quarter ad played, kia.com failed miserably
The following screenshot shows the drop in transferred bytes during game time when hitting the home page. At the same time we observed internal server errors and the socket timeouts which explain the actual problem. Web Servers couldn't handle the incoming load because they were busy delivering the very heavy weight content. Note: In my previous blog I identified the symptoms of socket timeouts, however, further investigation for this blog revealed a more prevalent symptom of internal server errors (HTTP Error code 500):
Transferred Bytes show Availability fell during the game
Socket Timeout Error:
Internal Server Error 500 - yes, this is a generic error message, but given what we know about kia.com's site performance the unexpected condition was encountered was likely due to excessive load and the servers inability to service that traffic:
Lesson #2: What Caused the Bloat?
To read on, about what caused the bloat - click here for the full article.
Takeaways for Developers
Takeaways for Performance Engineers
- Load Test 1.5x - 3x of your expected load. Make sure to test from different regions and browsers.
Takeaways for Business / Marketing
- Make sure the advertising dollars spent matches the money it will take to be sure that IT and Dev get it right.
In a future article, I will help answer these questions: is deploying SSL on a homepage a security requirement, a marketing tactic, or simply a misunderstood technology? And, is the importance to not only include your CDN Partner in your testing and monitoring Strategy, but extend this to also analyze which CDN partner is the right one for you. Click here to read more now.