An unoptimized Drupal 7 site with 2 GB of RAM can serve about 20-25 requests per second satisfactorily. If you want to go beyond that, the site will require some tweaking. What you tweak depends on whether most of the users on the site are anonymous or authenticated. Here are the top things you can do for performance improvement:
Site is serving mostly anonymous users:
1) Definitely install and configure APC, memcache and entitycache.
2) Put Varnish proxy in front of the webserver. It takes about 30 minutes to install and configure but will dramatically lower your page load times. In fact, Varnish can handle about 300 requests per second on a 2 GB machine if all the pages are cached. Use Expire module to expire only selected pages on content update/deletion.
3) Use Advanced CSS/JS Aggregation module to aggregate CSS and JS files. Try moving all the JS files to the bottom of the page. But note that this may break your site so implement this on production after thorough testing. Also experiment with inlining critical CSS. In my experience, it will decrease page load time by about half a second.
4) CSS/JS/images should have far future expiry header. This will ensure that browsers won't request for the same CSS/JS/images again and again.
5) Make sure that webserver is serving compressed pages/CSS/JS.
After implementing the above 5 steps, your 2 GB RAM server should be able to server 50 requests per second pretty easily.
Site is serving mostly authenticated users:
Optimizing such a site is more complex. Such sites fall in one of the two sub-categories for optimization purposes:
(a) Most of the pages on the site are identical except 1 or 2 blocks that have user-specific information. For e.g. Drupal Commerce site.
(b) Most of the pages are completely customized for the user. For e.g. Drupal Commons site.
If your site falls in category (a), then apply most of the techniques that we discussed for the site serving mostly anonymous users. The only difference is that for non-admin pages, Varnish will need to remove the SESSION cookie from the header and serve cached pages. Use AJAX Block module to server blocks with user-specific information using AJAX. This way most of the page will be served extremely quickly using Varnish and then user-specific information will be served over AJAX.
If your site falls in category (b), then use Authcache module. I prefer not to use it as much as possible because it requires quite a bit of configuration and maintenance. But it does work really well. It won't be as fast as using Varnish but it will be able to handle 50 requests per second that you are looking for.
If you are looking to go above and beyond what we have discussed here, then have a look at Drupal Performance Optimization Checklist. Disclosure: It is written by me. It cites an exhaustive list of things you can do to make your Drupal site blazing fast.