Commenting on two things here.
First on beat's comment: In ~2001, I wrote a Palm Pilot app for real estate agents. My mom's one, and I watched what she did during the day and tried to make a simple, easy to use app that managed the entire sales process for her. <list-of-mistakes>It had a workflow for the entire sales pipeline, from prospects to closing. It kept every detail of every stage, with a field for everything, and even had a built-in mortgage calculator. I even put the majority of the stuff in a library, and made the app a thin configuration of the library's components, so that I could launch similar products to other kinds of sales agents. It had customized widgets that made great use of screen real estate.</list-of-mistakes>
Sales were terrible (total in my life was $50). I learned, too late for me to listen, that most real estate agents at the time, in my area, were over the age of 50. Many couldn't read normal-sized text on the Palm Pilot without glasses, and few were likely to spend $400 on a handheld device when they could take notes with pen and paper.
On the list of mistakes: First, clearly, I over-engineered against a very low-fidelity model. I only had one sample of data (my mom), and built too large a product against a small amount of data. Second, my data was biased, my mom didn't want to discourage me when she couldn't read the screen. I should've noticed that she had to stop and put her glasses on every time. Third, having over-engineered, I went further and tried to generalize the code to a library, even though I didn't know how applicable any of it was to even one market, much less the larger class of markets.
Second comment. On the pegged webserver that's preventing me from reading the article: First, really, just loadtest your webserver. It's not hard, try apache bench ("ab") as a starting point. Second, shut off unnecessary parts when they're being slow (like analytics), a database access for comments, etc. Load them asynchronously from JS (putting the CPU load on the client), and let the page render when you get back an error or timeout. Unless the primary content on the page is dynamic, the page should get to the client without any I/O except for the NIC.