Products

Solutions

Resources

Partners

Community

Blog

About

QA

Ideas Test

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

Welcome to the DNN Community Forums, your preferred source of online community support for all things related to DNN.
In order to participate you must be a registered DNNizen

HomeHomeUsing DNN Platf...Using DNN Platf...Performance and...Performance and...How Many Concurrent Users Can Be on a SiteHow Many Concurrent Users Can Be on a Site
Previous
 
Next
New Post
9/28/2010 12:14 PM
 
We are testing out a site that allows students to take surveys and we are trying to determine how many concurrent users can be on the site at once given the following parameters. We are also looking for any best practice recommendations for managing the SQL server, connection pooling, etc.

Dedicated Mid Level PowerDNN server with 4GB RAM (only one other website on server with very minimal traffic)
SQL Server 2005
As user progresses through the survey we are writing a single update to a table with the user's answer to the question
Users are typically located in one or two schools around the US
DNN 5.5 (with .NET workaround in place)

We see the CPU pegging at near 100% routinely with less than 50 users online. Should we be limiting SQL Server's access to the CPU at all or let it self manage?

What are some connection pooling best practices?

What are some recommended methods for load testing a system like this? In the past my research has shown that most load testing software is not within our budget.

What else could we be tracking / monitoring to assess the performance.

I know I have asked a lot of questions here that could all be a full day of training on the subject at hand. It would be great to get some general or specific responses. But if you are someone who feels like you could really add value to our testing process, feel free to contact me at the contact form at www.theforerunnernetwork.com or using PM if DNN has that working.

Cliff

Forerunner Communications, LLC
DotNetNuke Integration Specialists

 
New Post
9/28/2010 1:12 PM
 
Hi Cliff,

I see two aspects in your questions. Capacity planning and capacity optimization.

To do proper capacity planning, you should execute load testing on your website. Visual Studio comes with great load testing tool that will enable you to simulate visitors and capture + record performance counters. We have some capacity planning with DNN and this is how we proceed using Visual Studio:
  • we record a test scenario, limited to a small use case (such as viewing a survey question and submitting an answer)
  • we play the scenario with load increments (such as adding 5 new users every 30 seconds)
  • we monitor the response time, and ensure we get a response under 2 seconds (which is our target service level)
  • once we hit this mark, we note the number of concurrent users
  • we then play the same test using a constant load of our maximum number of concurrent users and record resource utilization.
  • Base indicators: memory, cpu, bandwidth on the webserver, memory, cpu, transactions, disk I/O on the sql server

Given this information, we can identify a bottleneck. Your top performance will always be limited by one core resource: cpu + memory (processing power), bandwidth speed, storage speed.

If you see the CPU nearing 100% much of the time, then CPU is what is limiting your capacity. If it was disk that was your bottleneck, or any other resource, you would most likely not be able to hit 100% CPU.

Once you have identified your bottleneck, you have 2 options. a) either scale this resource, such as adding more CPU b) try to optimize your website to reduce its requirement for this type of resource.

If you host both SQL and the web server on the same machine, the first step would be to check what process is using the CPU (is it w3wp,exe or sqlservr.exe). I would suspect the web server to be taking the CPU and not SQL Server.

If it is your website that is using much of the CPU, then you would need to do some profiling on the website to determine what part of the website is using a lot of CPU. Visual Studio also has a great tool to do profiling (not all editions, you'll need to verify which ones). With profiling, you'll be able to spot which module / aspect of the website is using a lot of CPU. Then, either change this functionality (such as using other module / menu) or if they are custom modules, review and optimize your custom code.

To answer your specific questions:

> Should we be limiting SQL Server's access to the CPU at all or let it self manage?
If SQL Server is using a lot of CPU, it probably needs to do so to service web requests. I wouldn't try to limit this. But make sure SQL Server is the one using the CPU

> What are some connection pooling best practices?
I don't think you need to tweak connection pooling parameters, but definitely don't turn this feature off

I forgot one last thing. The stressing method explained here is used to determine the bottleneck at max capacity. This is the maximum number of users your website can handle at exactly the same time. It is not representative of actual concurrent users capacity. To estimate your real capacity, you should record a more realistic scenario, such such as "logging in, viewing survey question 1, submitting, viewing survey question 2" and include think times (users do not click each second).

Agreed, this is a large question. I hope you'll find some usefull information in this post.

Best,

Etienne
 
New Post
9/28/2010 1:13 PM
 
Cliff,

There isn't a "tried and true" method to the madness here and you will see many varying reports of what you can and what you cannot handle from a user perspective.  in general I see that one server is going to start to max out at about 20-40 simultaneous requests, now keep in mind that is more like 1000 or so concurrent users, depending on how you slice the time pie for the given day.

If working on a single server, I strongly recommend setting memory and CPU limitations on the SQL Server side of things to keep everything in check, and to prevent one side of the system from killing the other.

From a testing/validation standpoint there is a free tool from Microsoft called WCAT which can be used to load test, it works very well, it is a bit cryptic the first time you use it, but the price is right and it gets great results.  I used it successfully with a number of high-end, high-availability clients in the past.

From a configuration standpoint, all of your standard warnings are valid here, ensure that the performance configuration is as good as you can get it, IIS compression might be an option as well, and be sure to select your modules carefully!

If you would like any more detailed information or assistance, feel free to e-mail me directly at msellers@iowacomputergurus.com (I don't always see replies here...). 

-Mitchel Sellers
Microsoft MVP, ASPInsider, DNN MVP
CEO/Director of Development - IowaComputerGurus Inc.
LinkedIn Profile

Visit mitchelsellers.com for my mostly DNN Blog and support forum.

Visit IowaComputerGurus.com for free DNN Modules, DNN Performance Tips, DNN Consulting Quotes, and DNN Technical Support Services
 
New Post
9/28/2010 2:08 PM
 
Thanks so much for the detailed replies. The 100% CPU is typically a combination of both sqlserver and w3wp. But it can be mostly sqlserver at times. Right now we are running some beta tests of the actual application, but this would be a good time to get some performance stats as well. Just from the Users Online I am seeing from 30 - 40 users on the site at any given time. These users are at a school where they have several hundred students who come into a lab and answer 71 questions on the application (1 question per page) and when done they are replaced by another student.

We will give the tools mentioned a try during offline hours. But given this opportunity with a natural load of students on the application, what tools would you use to capture some performance info? We are trying to determine if we can recommend a max number of students across several schools on the application at one time. 

Forerunner Communications, LLC
DotNetNuke Integration Specialists

 
New Post
9/28/2010 2:23 PM
 
Cliff,

Shoot me an e-mail.

-Mitchel Sellers
Microsoft MVP, ASPInsider, DNN MVP
CEO/Director of Development - IowaComputerGurus Inc.
LinkedIn Profile

Visit mitchelsellers.com for my mostly DNN Blog and support forum.

Visit IowaComputerGurus.com for free DNN Modules, DNN Performance Tips, DNN Consulting Quotes, and DNN Technical Support Services
 
Previous
 
Next
HomeHomeUsing DNN Platf...Using DNN Platf...Performance and...Performance and...How Many Concurrent Users Can Be on a SiteHow Many Concurrent Users Can Be on a Site


These Forums are dedicated to discussion of DNN Platform and Evoq Solutions.

For the benefit of the community and to protect the integrity of the ecosystem, please observe the following posting guidelines:

  1. No Advertising. This includes promotion of commercial and non-commercial products or services which are not directly related to DNN.
  2. No vendor trolling / poaching. If someone posts about a vendor issue, allow the vendor or other customers to respond. Any post that looks like trolling / poaching will be removed.
  3. Discussion or promotion of DNN Platform product releases under a different brand name are strictly prohibited.
  4. No Flaming or Trolling.
  5. No Profanity, Racism, or Prejudice.
  6. Site Moderators have the final word on approving / removing a thread or post or comment.
  7. English language posting only, please.
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out