1

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.

rich
  • 11
  • 1
  • 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 09 '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 09 '11 at 16:34

2 Answers2

0

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.

Matthew Steeples
  • 1,303
  • 1
  • 10
  • 17
  • 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 09 '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: http://appfabriccat.com/2011/06/windows-20082008-r2-default-power-plan-of-balanced-can-increase-latency-and-reduce-throughput/ – Matthew Steeples Jun 09 '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 09 '11 at 18:54
  • Yeah in terms of disk access i am talking about the DB, which is on the same machine. – rich Jun 09 '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 09 '11 at 19:05
  • hi Matt, i appreciate your comments. I have intimate knowledge of the webapp. There are no external webservice calls. I have a good understanding of how ASP.Net works in terms of requests. I've done the testing and it is no more complicated then described above. "what can be done from a server/IIS7 configuration standpoint to speed this thing up" that is the original question. I have a very good idea how to optimize the application. What i don't know about is the server config. IIs7 etc. That is why i posted this on server fault and not stackoverflow. – rich Jun 09 '11 at 20:07
  • yes almost all requests are 1 second or more.. I am not trying to figure out how to increase performance on specific requests. I am asking what can be done in iis7/MS SQL/Windows server 2008 that would ensure a general increase in performance. If updating hardware has absolutely no effect then i would say we have found a SERIOUS issue with IIs7 and windows 2008. I am not running a wait or timer on requests in the app. So failing code optimization, what can be done? How can a p3 and dual xeon have the same performance? – rich Jun 09 '11 at 20:11
  • IIS/SQL and Windows Server are tuned for performance out of the box. There isn't anything that you can reconfigure that is going to make a significant difference for these, so I'm afraid tweaking your application is probably the only option – Matthew Steeples Jun 10 '11 at 15:00
0

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.

TristanK
  • 9,073
  • 2
  • 28
  • 39