In the end, the GDGT traffic problems calmed down after the initial launch, thanks to improved database speed and caching techniques that were employed to address future problems with traffic.
In other cases, a denial-of-service (DoS) attack, such as the one that caused Twitter and other sites to go dark for several hours in August, can create the same kind of overload and congestion. Staten says other causes of Web site failure include poorly configured system components and out-of-date patches and updates on Web servers.
For most Web users, the occasional outage is one thing, but frequent downtime can cause serious business delays. As we rely more and more on Web applications, even those related to social networking, Internet uptime is becoming more critical.
The following strategies for dealing with public Internet outages -- which admittedly include some that are more controversial than others -- will help you pave a smoother superhighway to your company's Web site.
1. Use speedier Ethernet connections
Most organizations currently connect their Web servers to the public Internet via Ethernet networks running at 10Gbit/sec. Tom Daly, president of Dyn Inc., a network services company based in Manchester, N.H., says the IEEE -- which controls the 802.1 spec -- is evaluating standardized 40Gbit/sec. Ethernet as a remedy to traffic outages. He says this increased performance would dramatically help high-transaction customers.
Some users aren't waiting for the final specification. One success story is the Amsterdam Internet Exchange, which links 16 10Gbit/sec. switches together to handle about 500Gbit/sec. of daily traffic without disruption. "40Gbit/sec. and 100Gbit/sec. is dearly needed to reduce overall congestion on the Internet," says Daly.
Networks running at 40Gbit/sec. or 100Gbit/sec. won't solve bottlenecks at specific sites, such as Twitter.com, that are overloaded by a spike in requests. Still, these networks will become more important as more and more users gain access to the Web and use it for watching television shows online, making online backups and visiting the most popular sites. All of that activity will increase the stress on 10Gbit/sec. Ethernet and 10Gbit/sec. routers.
"40Gbit/sec. router-to-router links are already being utilized in backbones to help alleviate traffic," says Cory Crosland, the president of CROSCON, a New York-based Web development company. "As Internet usage continues to explode, the backbones will need to be continually upgraded to keep up." This means faster Internet speeds for consumers and better connectivity. Verizon's FiOS is one example of the type of network that could deliver the necessary speeds and connectivity. "Moving to 40Gbit/sec. will help the Internet as a whole move faster, but not improve [any] one site's uptime or speed," Crosland says.
2. Use content delivery networks
For handling large amounts of media -- such as iTunes music or Amazon.com and Netflix video-on-demand services -- the public Internet relies heavily on CDN (content delivery network) providers such as Limelight and Akamai. Microsoft recently launched a free CDN to cache AJAX libraries and boost Web site performance.
Here's some more advice from Jason Mayes, the senior Web development engineer at XMOS, on dealing with site congestion and other potential server outage problems:
- 6. Optimize your content management system. Reduce the number of database calls you need to make for each page request, for example. In Drupal, this can be as simple as disabling modules you do not need. Also, make any custom code more efficient if possible. A change of one-tenth of a second in an algorithm that is run thousands of times adds up.
- 7. Support caching of data that is frequently accessed. Use Memcache or something similar. Many CMS packages support this, but be careful with dynamic data.
- 8. Load-balance your Web server.
- 9. Separate your read/write databases so that you can have a master/slave database setup, allowing your database infrastructure to be scalable.
- 10. If applicable, split your database vertically or horizontally (or potentially a hybrid of these if this model suits your database structure) over several servers. This may not be suitable for everyone, however.