Link to home
Start Free TrialLog in
Avatar of reindeerauto
reindeerautoFlag for United States of America

asked on

ASP.NET Web Application Performance

Background:
C# ASP.NET 3.5 application
SQL Server 2008 backend
IIS 7
Internet Explorer 10 and Chrome

We have a web application that is accessed by roughly 50-60 employees at the same time.  We have a variety of browsers that are used.  IE 8,9,10 and Chrome.  When you open up the web application the first time it seems to run great.  Over time it because slower and slower.  I look at the database server and everything looks ok there and no locks on queries or anything of that nature.  I look at the web server to see if the worker process is spiking and it seems to be at normal usage.  It only is taking up maybe 200 megs of ram.

Generally, they can close down whatever browser they are using, open it up again and its ok.  Others have claimed that they close down the browser, open it up and its exactly the same as it was before they closed it down.

When it's dragging to the point that it's taking 30 seconds from going to one page to the other, I restart the application pool and that seems to make it run normal again.

This leads me to believe its something with my code and a possible memory leak but then why would worker process only be taking up less than 200 megs on the server?  Maybe it's something in the .NET 3.5 framework and IIS?  A lot of the problems seemed to start when IE10 was installed on some machines by automatic updates.   We reverted some users to previous IE8 and that helps a little but still some drag.  We then let users use Chrome and it seems that when they initially start up chrome, it's extremely fast.  Other users have never really seen the application slow at all.

I've been trying to pin point where the problem is, but I can't seem to figure it out.  I just can seem to figure out where my focus should be set.  I've been combing through code and queries.  I've run Red Gate's performance profiler but that doesn't capture the problems we are having on our live server. It only captures what I do.  Event Viewer hasn't helped much.  

What could possibly be the issue?

Thanks
Kurt
Avatar of jorge_toriz
jorge_toriz
Flag of Mexico image

could you configure a Trace? so you can view exactly the methods that are taking so much time to execute
Avatar of reindeerauto

ASKER

I could but if it was just about methods taking a long time then why would would it seem fine initially then progressively get worse?  Seems like a memory problem?
Additional information:

There are reports of long delays when saving information into the database.  Then 5 minutes later, they would save the same information on a page and it would happen instantly.  When I hear that, I would think its a database problem of some sort.  So again, everything is completely random at this point with delays.
Mmm... well, the thing could be database locks, do you have acces to run a profiler on the database server?
Ran profiler looking for database locks and there were none that it detected over the last few days.
Can you upload the results of the following DMVs?

sys.dm_os_wait_stats
sys.dm_os_latch_stats
sys.dm_os_spinlock_stats
here it is.
db-stats.xlsx
Well, I can tell you the following things and ask some questions by the info that you sent:

1.

You have problems with your disk subsystem, here you can have two problems, you are reading more information than really needed or the disk subsystem isn't fast enough to cover the R/W demand

2.

What is the configured degree of parallelism on your instance?

3.

How often are you executing backup tasks?, of any kind, data or log

4.

What is the configuration of your disk subsystem?, capacity, speed, RAID, etc.

5.

When was the last time that you restarted your instance?

6.

Are you using replication?

7.

How much RAM does SQL Server has available to work with?
I'm not a DBA so hopefully I answered correctly or as much as I can.

2.  Not sure.  How can I find out?

3.  Officially a backup is run every 30 mins.  They vary from Diff backups, to logs, to full.  Full back ups are done twice a day. We have other backups that happen once a day (in our "downtime")

4.  We are virtualized.  So they are virtual drives but if you want specific specs on our SAN drives then I can get that but don't know if its relevant.  Volume that the server and the databases sit on is 300GB.  100 GB Free at the moment.  

5.  May 1, 2013

6. Not that I know of.

7.  Maximum SQL Server memory is set to 7.5GB
Well, we must start by changing your backup strategy, is not necessary to perform full backups twice a day, you are consuming the disk subsystem with unnecessary work.

I would recommend a weekly full backup, three differential backups (lets say monday, wednesday and friday) and log backups each half hour.

You can get the degree of parallelism with the following code:
sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'max degree of parallelism'

Open in new window

name      minimum      maximum      config_value      run_value
max degree of parallelism      0      1024      0      0


We had a consultant come in and setup all the maintenance plans we have.  I was wrong about twice a day on full backups.  We do that once a day when only 1 person is in the system.  We do a differential backup one a day in the middle of the day.  Then we do transaction log every 30 mins.  We also do index reorganization, database integrity and statistics jobs every work day.
How many concurrent users does your application have?
55~
SQL Server has 7.5 GB of RAM assigned, how much does the operating system have?
12GB
I should correct by saying its more like 110 (double) because every user usually has 2 sessions open.
ASKER CERTIFIED SOLUTION
Avatar of Steven Kribbe
Steven Kribbe
Flag of Netherlands image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial