views:

50

answers:

2

How can I test my asp.net web application limits. User connections etc. And does my application is limited to server & IIS performance or what are the other factors? How can I host an application which will be used by millions of people?

+1  A: 

The first limits that you going to face, is yours.

What I mean by that. The main problem is when more than one users at the same time ask for a page.

Now if you have only one worked pool for your application then every user waits for the previous to finist its call.

If your pages delay more than 500 milliseconds to render, and takes more than 3-10 seconds to send them, and 2 or more users ask for the same think at the same time, your second user gets more lag. Also there is a problem that one user ask for a long wait query and stop the rest of them for get anything until this one finish.

The first solution is to user more worked pools (web garden) When you do that you need to make good synchronize of your data, because now 2 users can change the same think at the same time.

So my point is:Make a good design of your pages, and when you get the millions of users the only think that you need is money to get more computers and make a web farm (upgrade from web garden).

The iis limits is set on configuration of iis pool limits. If you actual have too many users what they see is the delay to get a page. If this is happens on one only pool then maybe a user crash it and stop them all to get anything. If you have many pools you maybe have less problems. More pools means more free memory, fast hard disk, fast computer, good synchronize of your data.

Sites with too many users maybe some times sites with nice videos, or photos, or shared stuff. In this case you can also place this media to a different server and split out the load.

Hope this help.

Aristos
+3  A: 

This is a complicated question indeed. I will try my best to answer it as best I can, so bear with me if the explanation seems contrived.

In terms of testing your application, Visual Studio comes with several plugins that can do load testing and performance analysis on your application. I don't know what version of VS you need to have in order to gain access to these features, however I believe they are available starting in the Professional edition. In the absence of Visual Studio, there are lots of programs available to run these tests, just search Google for ASP.Net load testing. One application that works with Apache also works with IIS is available here.

In terms of hosting your application, it really depends on how many users you're expecting. Many people get excited and say "millions of users", but in reality, for most people, it's a small fraction of that. If you are honestly interested in scaling so large, there are a couple of options:

  • Host in the cloud - Amazon Web Services and Microsoft Azure are two options that are both scalable to nearly infinity, and support ASP.Net virtually out of the box with zero configuration. Be aware, however, that these options can get very expensive, especially if you start using lots of CPU time and bandwidth. The upside, is, however, that you won't lose performance or throughput if your site has 1 thousand visitors or 1 million.

  • Throw hardware at it - The tried-and-true method of throwing hardware at the problem is probably less expensive, but won't scale as quickly. Start out by finding a good hosting provider and take a look at their offerings. Dedicated servers are a good start and fully-managed, but at some point you will have to build your own servers and co-locate them. Load balancing and redundancy become very important at the higher levels.

Regardless of what you decide to do, both options can be expensive. Hosting in the cloud costs little up-front but can become very pricey as it grows; dedicated servers or co-location typically has a large up-front cost (for setup fees and/or additional hardware) but is less expensive overall and in the long run.

My suggestion would be to start small and go from there. Shared hosting, while not scalable, gives you a great avenue to beta-test your site for pennies. If there's interest and you start making some cash, upgrading to a dedicated server should be painless.

Good luck!

rakuo15
Thank you very much. Good explanation.
HasanGursoy