HELP!!! Performance issues in .NET

  • Thread starter Thread starter Tim Greenwood
  • Start date Start date
T

Tim Greenwood

We are running into some brick walls here and I'm wondering if I need to do
some tuning (probably do regardless of the outcome here) or if we are
running into some reasonable expected limits.

Our e-commerce site is totally rewritten in .NET using C#. We went live
today and got around 1000 users immediately at launch time. We have two
sites running on this machine, our main .COM site and the secure site for
handling payments.

The machine is a dual P3 1.3G with 2GB ram. We have noticed that not alot
of caching seems to be taking place as only 400M ram are in use. Both
processors seem to be nearly pegged and web response is atrocious.

It seems to me we should be able to get a better response out of this
machine. I know it isn't close to cutting edge for a server but come on,
only 1000 people!! Should this really bring a machine like this to it's
knees???

Any help is greatly appreciated.
 
This also begs another question. What facilities are there in Visual Studio
..NET Enterprise that would allow stress testing of a Website of this nature.
I am not aware of any. Would we need to write our own? Or does anyone know
of any 3rd party apps that would do this WELL.
 
Tim Greenwood said:
We are running into some brick walls here and I'm wondering if I need to do
some tuning (probably do regardless of the outcome here) or if we are
running into some reasonable expected limits.

Our e-commerce site is totally rewritten in .NET using C#. We went live
today and got around 1000 users immediately at launch time. We have two
sites running on this machine, our main .COM site and the secure site for
handling payments.

The machine is a dual P3 1.3G with 2GB ram. We have noticed that not alot
of caching seems to be taking place as only 400M ram are in use. Both
processors seem to be nearly pegged and web response is atrocious.

It seems to me we should be able to get a better response out of this
machine. I know it isn't close to cutting edge for a server but come on,
only 1000 people!! Should this really bring a machine like this to it's
knees???

Nope. But there are any number of things you might have done wrong.

What kind of performance testing have you done to find out the bottle-
necks?
 
Tim, we often use Microsoft Application Center Test (bundled with Visual
Studio.NET) to test eCommerce apps - it might not be the best tool in the
world but it certainly works and it's scriptable so you can set up custom
tests to do just about anything you want to.

Steve
 
What kind of performance testing have you done to find out the bottle-
necks?


We've done quite a bit. We've exhaustively gone through our SQL server
queries and optimized everything. Really I was curious if this machine
should be able to handle this before spending time going forward. We
recently updated a portion of our network. of course it is the same segment
our servers are on. The web server and SQL server were recently upgraded to
gigabit nic's and a gigabit switch. We wouldn't think anything should be
wrong there but there are some symptoms that are starting to really point
that direction. We're going to go back through our old gateway just to rule
this out.

Thanks for the response
 
Tim Greenwood said:
We've done quite a bit. We've exhaustively gone through our SQL server
queries and optimized everything. Really I was curious if this machine
should be able to handle this before spending time going forward.

Well, it's hard to say without knowing exactly what it's doing. How
many requests a minute are you handling? (1000 users total doesn't mean
much without knowing what the users are doing.)
We recently updated a portion of our network. of course it is the same segment
our servers are on. The web server and SQL server were recently upgraded to
gigabit nic's and a gigabit switch. We wouldn't think anything should be
wrong there but there are some symptoms that are starting to really point
that direction. We're going to go back through our old gateway just to rule
this out.

Well, which server is maxed out, CPU-wise? If it's the SQL server,
don't bother looking at your C# code for a while, and if it's the web
server, your SQL queries are fine for the moment.
 
Tim,
In addition to the other comments on ACT.

Microsoft Press has "Performance Testing Microsoft .NET Web Applications" by
the Microsoft Application Consulting and Engineering (ACE) Team.

That covers how to use ACT plus some other tools to performance test your
web app.

Some other articles on Profiling & writing code in .NET that performs well:
CLR Profiler is a tool you can reliably use to see if you app is not
releasing memory as it should.

Info on the CLR Profiler:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenethowto13.asp

http://msdn.microsoft.com/library/d...y/en-us/dndotnet/html/highperfmanagedapps.asp

In addition to the above articles, The following articles provide
information on writing .NET code that performs well. I believe one of the
covers how to use Performance Monitor under Control Panel to monitor the
memory usage of your app.

http://msdn.microsoft.com/architecture/default.aspx?pull=/library/en-us/dnpag/html/scalenet.asp

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/fastmanagedcode.asp

http://msdn.microsoft.com/library/d...y/en-us/dndotnet/html/highperfmanagedapps.asp

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/vbnstrcatn.asp

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchperfopt.asp

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/dotnetperftechs.asp


Hope this helps
Jay


Hope this helps
Jay
 
Jon Skeet said:
Well, it's hard to say without knowing exactly what it's doing. How
many requests a minute are you handling? (1000 users total doesn't mean
much without knowing what the users are doing.)

Not much, hence the surprise. There's just a few pages displaying a couple
dozen rows from a dataset. These tables have roughly 20 columns so it's not
much data. Basically it's users purchasing tickets to a convention. Not an
intensive process at all. Anyway, I don't want to un necessarily waste
anyones time here. I'm the lead developer here and we've taken pretty good
steps to ensure that the app is sturdy and performs well. I have exhaustive
logging integrated into all our components so I can monitor every object
(only those requested) as needed with minimal impact. As another post I
made said, things were pointing to hardware and sure enough the network
admin has found a firewall issue here between the webserver and our credit
card processor.... All seems to be working well now.

Thanks for all the quick responses, I really appreciate it. The ACT looks
interesting as well. I've never really bothered with it as I'm usually
primarily doing Windows app for the internal accounting department. I've
not been on the Web side that often. It looks like we could put it to good
use though.
 
Back
Top