<p>How much traffic can one web server handle? What's the best way to see if we're beyond that?</p>

<p>I have an ASP.Net application that has a couple hundred users. Aspects of it are fairly processor intensive, but thus far we have done fine with only one server to run both SqlServer and the site. It's running Windows Server 2003, 3.4 GHz with 3.5 GB of RAM. </p>

<p>But lately I've started to notice slows at various times, and I was wondering what's the best way to determine if the server is overloaded by the usage of the application or if I need to do something to fix the application (I don't really want to spend a lot of time hunting down little optimizations if I'm just expecting too much from the box).</p>

[{'answer_id': 60154, 'author': 'Gulzar Nazim', 'author_id': 4337, 'author_profile': 'https://Stackoverflow.com/users/4337', 'pm_score': 4, 'selected': True, 'text': '<p>What you need is some info on <a href="http://msdn.microsoft.com/en-us/library/ms979198.aspx" rel="noreferrer">Capacity Planning</a>..</p>\n\n<p>Capacity planning is the process of planning for growth and forecasting peak usage periods in order to meet system and application capacity requirements. It involves extensive performance testing to establish the application\'s resource utilization and transaction throughput under load. First, you measure the number of visitors the site currently receives and how much demand each user places on the server, and then you calculate the computing resources (CPU, RAM, disk space, and network bandwidth) that are necessary to support current and future usage levels. </p>\n'}, {'answer_id': 60158, 'author': 'www.aegisub.net', 'author_id': 6203, 'author_profile': 'https://Stackoverflow.com/users/6203', 'pm_score': 1, 'selected': False, 'text': '<p>If you have access to some profiling tools (such as those in the Team Suite edition of Visual Studio) you can try to set up a testing server and running some synthetic requests against it and see if there\'s any specific part of the code taking unreasonably long to run.\nYou should probably check some graphs of CPU and memory usage over time before doing this, to see if it can even be that. (A number alike to the UNIX "load average" could be a useful metric, I don\'t know if Windows has anything like it. Basically the average number of threads that want CPU time for every time-slice.)</p>\n\n<p>Also check the obvious, that you aren\'t running out of bandwidth.</p>\n'}, {'answer_id': 60281, 'author': 'Portman', 'author_id': 1690, 'author_profile': 'https://Stackoverflow.com/users/1690', 'pm_score': 0, 'selected': False, 'text': '<p>On that hardware, a .NET application should be able to serve about 200-400 requests per second. If you have only a few hundred users, I doubt you are seeing even 2 requests per second, so I think you have a lot of capacity on that box, even with SQL server running.</p>\n\n<p>Without know all of the details, I would say <strong>no</strong>, you will not see any performance improvement by adding servers. </p>\n\n<p>By the way, if you\'re not using the <a href="http://msdn.microsoft.com/en-us/library/hdxfb6cy.aspx" rel="nofollow noreferrer">Output Cache</a>, I would start there.</p>\n'}, {'answer_id': 490126, 'author': 'Andrei Rînea', 'author_id': 1796, 'author_profile': 'https://Stackoverflow.com/users/1796', 'pm_score': 1, 'selected': False, 'text': "<p>Measure, measure, measure. Rico Mariani always says this, and he's right.</p>\n\n<p>Measure req/sec, RAM, CPU, Sessions, etc.</p>\n\n<p>You may come up with a caching strategy (Output caching, data caching, caching dependencies, and so on.)</p>\n\n<p>See also how your SQL Server is doing... indexes are a good place to start but not the only thing to look at..</p>\n"}]
['https://Stackoverflow.com/questions/60142', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/3442/']