From: Perrin Harkins Subject: mod_perl deployment at EToys Traffic: 2.5 million+ page views/hour during Christmas 2000 In 1999, I joined the development team at the rapidly growing on-line toy retailer eToys.com. At the time, the site was running on a pretty standard platform of Perl CGI and a MySQL database. Traffic was increasing, and the servers were already straining under the load. Our major task was to figure out how to get this system to scale large enough to handle the expected Christmas traffic. The toy business is all about seasonality, and the difference between the peak selling season and the rest of the year is enormous. The site had barely survived the previous Christmas, and the MySQL database didn't look like it could scale much further. There was no time for a significant re-write of the exisiting code, so we looked to mod_perl's CGI acceleration capabilities to get us through. Using the Apache::PerlRun module and the persistent database connections provided by Apache::DBI, we were able to do a basic port to mod_perl and Oracle in time for Christmas, and combined with some new hardware we were ready to face the Christmas rush. The peak traffic lasted for eight weeks, most of which were spent frantically fixing things or nervously waiting for something else to break. Nevertheless, we made it through. During that time we collected the following statistics: * 60 - 70,000 sessions/hour * 800,000 page views/hour * 7,000 orders/hour According to Media Metrix, we were the third most heavily trafficked e-commerce site, right behind eBay and Amazon. It was clear that we would need to do a re-design for 2000. We had reached the limits of the current system and needed to tackle some of the harder problems that we had been holding off on. Using mod_perl and a variety of other open source tools, we rebuilt the site to use a modular object-oriented design, improving flexibility as well as performance (see the Tutorials section for more information). Our capacity planning for Christmas 2000 was for three times the traffic of the previous peak. That's what we tested to, and that's about what we got: * 200,000+ sessions/hour * 2.5 million+ page views/hour * 20,000+ orders/hour See the Tutorials section for more information on how this feat was accompilshed!