4

I have an ASP.net web application deployed on the small AWS instance (Dual Core AMD, 2.60 GHz, 1.7 GB RAM). I would like to perform load testing on this server for 300 concurrent users and for future, I want to design the tentative capacity planning and deployment architecture for 250,000 registered users for my application.

I am very new person in this area and have not done any kind of load testing before.

The Use-case and scenario of my application will be as below:

Scenario - 250, 000 registered users in database

Concurrency – 5% - 7% - approximately 17,500

Each user has a book shelf and assuming each user is subscribed for 10 books. Each book is of around 25 MB in size with 400 pages

Use cases

  1. User Login

    • Database authentication & authorization
  2. View Book Shelf with book images

    • Book Shelf (.swf) - 400 KB (gets loaded for each user)

    • 10 book images will be loaded (20KB per image)(approximately)

    • catalog.xml - 30 KB / user for allocated for the user

    • Note: Approximately 650KB of data is gets downloaded on to client machine

  3. Browse book : On clicking a book image following files & its sizes will be downloaded to clients machine

    • One time
    • Reader.swf - 950 KB (first download)
    • XML data’s of approximately 100 KB / per book (on click)
      • Book.xml
      • Annotation.xml
      • Catalog.xml
      • Usersettings.xml 40KB*4 = 160 KB per user (.swf)
    • Note: Approximately 1200KB of data is gets downloaded on to client machine

Could someone please suggest how can I proceed with this?

Very much thanks in advance, Amar

Amar
  • 257
  • 2
  • 6
  • 14
  • I know it's old question but still commenting on this as I find a [very good article](https://www.infosys.com/IT-services/independent-validation-testing-services/white-papers/Documents/capacity-testing-websites.pdf) on your question. – Bacteria Dec 18 '15 at 14:33

2 Answers2

3

Completing the first goal (test 300 users) is pretty straightforward - choose a load testing tool, build the scenarios and test. Then tune/optimize and repeat.

But I think your bigger question is how to approach testing and planning for your full capacity - which you say is ~18k concurrent users. First, make sure that number (7% of user base) is the peak concurrency, not average. You need to test the peak.

So assuming that you are planning a load-balanced multiple-server cluster to handle that load, the next step is to determine the maximum capacity of a single web/app server, without the load-balancer in place. This gives you a baseline that you can use to judge the performance of the cluster. This is a really important step and many of our clients skip this step, to their own detriment. It is important because there are many conditions under which a load-balanced system does not scale linearly with the number of servers in the cluster. Ideally it should and good systems get pretty close. You'd be surprised how frequently we see systems that don't scale well at all. We've even seen a few systems that actually have lower capacity as a cluster than a single server could handle on its own.

Once you have that baseline established, you can make a preliminary estimate about the total number of servers you'll need and you can build your cluster. I recommend next testing with 2 web/app servers. This should nearly double your capacity. If it doesn't then you need to determine why before moving on to larger tests. Likely candidates are the load balancer setup or the database (if a single database server is servicing all the web/app servers). Occasionally something more fundamental to the application architecture is at play.

When you are satisfied that scaling from 1 to 2 servers is performing optimally, then you can proceed to scale up to your full cluster and test maximum capacity. Be prepared to back-track if you don't see the scalability you expected - test with 3, 4, 5 servers, etc.

I hope that helps! Good luck :>

CMerrill
  • 1,857
  • 1
  • 14
  • 16
  • Hi Merrill, Thanks for your detailed explanation. It really helped a lot. Could you please suggest me the important performance factors to be considered while running the load test and to make the preliminary estimate based on this performance factors. This would help me a lot, Thanks again. – Amar Jan 25 '11 at 10:07
  • Sure. We always focus on end-user performance. This means that we are primarily concerned with page load time and errors. In some organizations, you might have some other criteria, such as CPU utilization and bandwidth consumption that you may also be looking for where you are sharing bandwidth and CPU with other applications. We then run tests with increasing load, in a stepped ramp configuration, to determine the user level at which the system no longer meets the performance goals: http://www.webperformance.com/load_testing/blog/2008/07/load-test-configuration-using-a-stepped-ramp/ – CMerrill Jan 25 '11 at 20:38
  • Thanks Merrill, I did a round of load testing using VSTS for 200 and 400 concurrent users on a isolated network using the Quad Core server and P4 machine to generate the load. I considered the default performance counters of VSTS and found that the processor time usage was 14.6% and the memory usage was 900MB for 200 users. For 400, it was 21.6% of processor time and only 1GB of Memory usage. Based on this, I assumed that quad core can support upto 1500. Is my assumption correct? – Amar Jan 31 '11 at 05:12
  • Can you also please suggest me how I can calculate the bandwidth capacity? I found in the report that the average of bytes sent/sec was 10MB / sec for 400 concurrent users. I did this load test for 15 minutes. Thanks. – Amar Jan 31 '11 at 05:17
  • Well, you can make an assumption about capacity, but there is a good chance that it will be wrong. While CPU utilization might scale linearly, it might not. Or some other factor may limit capacity that has not been a factor with 2-400 users. Only by testing 1500 users can you be sure if the system can handle it. – CMerrill Jan 31 '11 at 14:57
  • While a network engineer might calculate the capacity, as a tester you should measure it - i.e. test it. That's the only way to know how much you really have. You can calculate the maximum bandwidth requirement, based on the bandwidth requirement for a single user. – CMerrill Jan 31 '11 at 15:00
0

This link: http://support.microsoft.com/kb/231282, has links to some tools to stress test your website.

This is obviously a complicated area, so you may have 2.5 million registered users (really that many?), but how many are concurrent, and what areas of the website will they be using. All of these things (and many more), will impact the capacity planning for your system.

Bravax
  • 10,453
  • 7
  • 40
  • 68
  • Hi Bravax, I will look into the links which you have shared. I have updated my question with some breif scenarios and usecases. Please have a look into it and see if that could help to answer my question further. Many thanks – Amar Jan 20 '11 at 12:28
  • 250,000 != 2.5 million registered users – Vishal Verma May 06 '13 at 09:07