this is obviously entirely dependent on the kind of software you're writing. if all you're doing is serving static pages, sure, one server can serve a million or more requests a day. but if you have a heavy server side component, like handling large file transfers, or even extensive batch processing, you're going to hit a wall a whole lot sooner.
a simple, effective approach to this problem is to partition your site into services, each of which run independently. then, when it comes time to scale, you can scale each service to its own box and beyond independently, with the added benefit of minimizing downtime to a small sub section of your site.