i am running an ASP.Net webapp on a dedicated server and recently made a significant update to the server hardware. To my surprise there is absolutely no performance increase.

old server: single xeon x3220 2 gigs of ram Windows 2003 IIs6 database running on separate server, older xeon.

new server: 32 gigs of ram raid 1 0 SSDs Windows 2008 standard IIs7 dual xeon x5660 DB running on same machine

Everything about the new server is significantly better and yet no improvement. We are making updates to the webapp itself but i am wondering what can be done from a server/IIS7 configuration standpoint to speed this thing up. It seems impossible to me that this webapp has zero improvement with this update.

  • Without any details of what your app does there's not much that we can offer up as to why you're not getting an improvement. – squillman Jun 9 '11 at 16:24
  • The webapp is a basic CRUD db application. Gets data, displays it, posts/inserts etc. We are optimizing the webapp, but my question is should this significant hardware update not effect performance at all? – rich Jun 9 '11 at 16:34

First of all we need to clarify what you mean by no improvement. The key thing to remember with performance optimisations is to measure.

If your pages were only taking milliseconds to load before then they are probably taking 1 or 2 milliseconds less now. Just because it isn't noticeable to the human eye doesn't mean it's not happening.

Of course there's also the difference in performance between how fast the pages load and how many concurrent requests the server can handle. You may find that even if the server seems to be responding the same it can take more simultaneous users.

If your application is a basic CRUD app then adding more processor and memory probably wouldn't make a difference because that's not where your bottleneck is. I'd have expected moving the DB to the same machine to give you a bit of an increase but again this is down to how you measure it.

My advice would be to use performance counters to measure server load, analyse the IIS logs to check page response times and find where the problem is.

  • OK, so my measurements were extremely straight forward. No concurrent users. Single page request response time. In all cases the pages response time was essentially the same. Meaning milliseconds faster or slower.. randomly. I would think moving the DB onto the webserver would speed things up as well. But i would also think switching to a SSD raid would also increase speed. – rich Jun 9 '11 at 18:48
  • Once the application is compiled and in memory then it doesn't require any disk access. SSDs for the database server should make things faster. It depends how fast things were in the first place. One thing that might be worth looking at is this blog post: appfabriccat.com/2011/06/… – Matthew Steeples Jun 9 '11 at 18:51
  • My point is this.. The code and specifically the DB queries need to be optimized. BUT SURELY increasing the server hardware capabilities should show SOME noticeably change in performance. These pages i am testing have response times in the seconds. not milliseconds. So even if the queries are completely unoptimized there is something to be said about MS SQL and Server 2008 if it cannot utilize increased hardware power.. AT ALL. The query should be effected by disk access and processing power at some level, ram as well.. And yet there is no effect. So what optimizations can be made in ii7 or SQ – rich Jun 9 '11 at 18:54
  • Yeah in terms of disk access i am talking about the DB, which is on the same machine. – rich Jun 9 '11 at 18:55
  • Does the application do anything like make webservice calls to external services? One thing to bear in mind is that for a single user the hardware changes are not that significant. A single request is not going to make use of multiple processors or a significant amount of memory. Also make sure that you are not using the first request to the server as something to measure with. ASP.NET compiles the web application on first request, and this cold start normally takes a few seconds. Does every request take a couple of seconds? – Matthew Steeples Jun 9 '11 at 19:05

Was the server upgrade done because the app wasn't performing well enough?

Yes, all the things you describe should lead to a faster experience. That they didn't suggests... (jarring chord) that it's not the platform that has the scalability issue.

You need to profile your application. IIS can serve lots of requests a second without any serious optimization, and it's unlikely you'd have changed any default settings (right?) already, so... that leaves the app. Or the App framework (.Net, right? got compilation debug=false set already?)

As you're on IIS 7 now, my suggestion is that the first place you look is Failed Request Tracing (install the Tracing component), and then hook up a rule that targets any response code (100-599), get the FREB log and look at where the time is being spent (the Compact view is good for this). If you see a module taking a disproportionate amount of time, investigate it.

Look at the web logs - are you seeing more requests than you think you should? (It's surprising how often the answer is "yes" when looking at performance optimization). To the time-taken results indicate that yes, the server thinks performance is slow?

Is there javascript on the page? Could this be a client performance perception problem?

If that doesn't provide enough depth, look at either instrumenting the app, or hooking up a profiler to it, to determine where the time is being spent.

The thing is, if updating hardware has no effect - and it looks like a serious upgrade - you're not hardware bound. You probably never were. Asking for "general speedup tweaks" is not what you need - you need to measure, change, test, iterate. Once you identify the cause, the solution is simple. But you're not there yet.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.