At my company our main product is web based and each of our customer has their own website. Each customer goes to customer.domain.com to access their website. Currently, in IIS each customer has their own website set up, and are given 1 application pool for all of the applications in that website. Many of our customers are on the same code base, but some customers are on newer versions (beta testers).
We also use load balancing so that each request may hit any of X servers.
Is this the most ideal setup? One of the main issues is that we only have about 8 GB of ram on the server, but also about 200 clients, so for each application pool we have to limit the amount of memory it can use to like 300MB so that we don't run out of memory, but this also causes the app pool to recycle frequently.
We want to scale out, rather than up, but as we add more and more clients, we are going to have less and less RAM available, or we will have to start adding massive amounts of ram to the servers.
If you have a similar setup, how have you solved the problem?