Not only that, but when no one was looking, I would go stand by its rack and say denigrating things about its scalability, just to see if it would crack.
Generally, the thing managed to hold up pretty well, but then we encountered The Problem. The Problem is a slight little issue with some 3Ware IDE RAID controllers, which sometimes decide to lose all memory of their RAID arrays when confronted by a cold boot. Combine this quirk with a late-night server lock-up induced by too-heavy traffic, and you've got a recipe for a very tasty disaster. I don't know exactly how or why the 3Ware could lose the contents of a RAID 1 array, but it managed to do so for us and, judging by what we read on Usenet, a number of other lucky folks.
After we first encountered The Problem, we decided to try to protect ourselves from future disk errors by rebuilding the box with a journaling file system (JFS), Red Hat Linux's ext3. Adding journaling to our already overloaded drives' duties was just too much. The system especially had trouble dealing with large-ish files. Ultimately, I resorted to scripting web server log rolls for every hour in order to keep the thing going. If we didn't manage it right, a (warm, please) reboot would be in order soon.
Obviously, it was time for a second server, something much faster than the current box. Our experience with the old PIII server taught us a couple of vital lessons about bottlenecks in mySQL/Apache servers. First and foremost, you need lots and lots of RAM. Second, a fast, reliable disk array is a must. (A related insight: cheap IDE RAID controllers aren't to be trusted.) And more CPU power doesn't hurt, either.
My plan was to build a box beefy enough to act as a database/back-end server for a whole array of Apache boxes, so we could ramp up The Tech Report's semi-covert plan for utter, crushing world domination by adding lightweight front-end web servers as needed. Our old dual PIII box would be the first of these front-end, non-database boxes.
So I set out to build a new system that would handle the strain of a brutal, unmitigated Slashdotting and keep asking for more. The requirements: more RAM than Dodge, more reliability than Honda, and a RAID array potent enough to kill a horse.
I'm not quite sure how a RAID array could kill a horse, but I know I wouldn't want to see it.
Oh, and it had to fit into our budget, which is: about five dollars.
Securing the parts
I started out my task by poking around a little to see how we might get a deal or two on some components. AMD was kind enough to kick in a pair of Athlon MP 2200+ chips, which were AMD's fastest multiprocessor chips at the time. We've reviewed Athlon MP processors a number of times, and we've always been impressed by the performance of the dual Athlon platform. The Athlon itself is a very good processor, of course, and the dual front-side busses and other sophisticated tricks in the 760MPX chipset make for an excellent server platform—definitely an upgrade from our dual 866MHz Pentium IIIs.
Tyan agreed to supply us with one of its killer server mobos, the new Thunder K7X Pro, if we would display the "Powered by Tyan" logo on the site's front page. Tyan motherboards have actually powered TR for a long time now, so no problem there. The Thunder K7X Pro (ours is a model S2469UGN) is the latest in Tyan's very successful line of Athlon MP boards. The K7X Pro doesn't require a proprietary power connector—it will accept the same auxiliary ATX12V connector as any Pentium 4 mobo or an EPS12V connector like new Xeon mobos—unlike past boards in the Thunder K7 line. The S2469UGN comes loaded with dual Intel NICs (one of which is a Gigabit Ethernet port), a dual-channel Adaptec Ultra 320 SCSI controller, four angled DIMM slots for use in low-profile cases, a pair of 64-bit/66MHz PCI slots, and a pair of sockets for those Athlon MP processors. This Tyan is a true server motherboard, with special features like console redirection to serial ports for better access to remote servers. All in all, exactly the kind of board we needed.
Next, we got a killer deal from the folks at Corsair on three 1GB DIMMs of registered DDR memory. Corsair RAM is top-notch stuff. We use it for most of our testing here in Damage Labs, and it's exactly the kind of memory we'd want to put into a critical server. Having 3GB of it would address one of the key problems with our old server, as well. I nearly got a fourth 1GB DIMM, but I decided against it, since the 760MPX chipset can really only use about 3.5GB of main memory, all told.
One interesting note: in order to cram 1GB of memory on one DIMM, Corsair has double-stacked the memory chips on the module. Check out the picture below to see what I mean.
The rest of the server's components I bought online at the best prices I could find. Let's take a look at the server's final specs, and then I'll discuss some of the server's features in a little more detail.