Most performance issues are a result of a lot of logged in users as the member bar, notifications, and chat systems (if used) cause a lot of requests to the server.
Try using FireFox and FireBug to monitor the network requests and responses. You will see how extra 'chatty' the site is when logged in.
So basically, you can have 50,000 members in the database and if only a few users are online there should not be any issues. Searches may be a bit slow, really large friends lists make take an extra second to load, but over all the site should be responsive.
On one of my servers Apache and PHP use about 30MB per instance / thread. A instance can process one request a time. Lets assume each user request takes .5 seconds to process so a single instance can take care of two requests a second.
Next lets assume a logged in member averages one request every two seconds.
Therefor a single apache instance should be able to handle four online users. And each online user requires about 7.5MB of RAM. (30 / 4 = 7.5)
Assuming the CPU and Hard Disks can keep up, if you have 1000 users online you would need 7.5GB (7500MB) of RAM, just for apache. In addition, the MySQL server would need enough CPU and RAM to handle at least 500 request per second (This assumes each apache request results in two database request (a low estimate) )
Unless you have a very large server with lots of CPU cores, RAM and fast disks you will most likely need a second server for the database.
The good / bad news is apache uses a lot more RAM and CPU then Nginx. So it is possible to use less resources per online user...
Also, please keep in mind that a custom configure apache server can take care or most requests much faster then .5 seconds. Using a PHP op-cache makes a huge difference as well as uninstalling apache modules that are not needed. With the correct changes it should be possible to get the average request under .25 seconds thus doubling the number of possible online members, or halving the resources for 1000 online members. (assuming the database server can keep up, apache has to wait for the database to return request information, so the longer it takes the database to return the results, the longer apache takes to service the request.)
Light man a fire keep him warm for a night, light him ON fire & he will be warm the rest of his life