We are struggling to find out what could be the ASP.NET application performance decrease when we pass from our staging server to our production server and we would like to hear from you to help us find the bottleneck.
Our staging server is a Intel Core 2 Quad CPU Q8200 (2.33 GHz) with 4GB of RAM, Windows Server 2003 R2 SP2 x64 Edition. Databases are hosted on Sql Server 2008 Express Edition. Everything seems to work smoothly. Page change is almost immediate ad page load time (for example switching pages in a grid) is ok.
Our production server is a VIRTUAL double Intel Xeon 3.00 GHz with 2GB of RAM, Windows Server 2008 Web Edition SP2 x86 Edition. Database are hosted on Sql Server 2008 Web Edition.
Our application is a .NET 3.5 (migrating to .NET 4 in these days) using classical best practices (masterpages, CSS, AJAX, paging for data, client cache for static resources, gzip compression on IIS for static and dynamic resources, server side cache for data that doesn't change frequently...).
I really can't understand what can cause the application to run so differently between the two scenarios. What could that be? The missing RAM? The load on the production server? The network limit?
What can I do to narrow bottlenecks' research?
You could briefly enable tracing on your production server (don't forget to turn it back off) and see what stages of your page loading are taking so long).
If you can easily add 2 GB more of RAM to the virtual server, try that, it's easy and might matter. Check your RAM usage in task manager and see how much you're using.
Are these servers hosted at the same place or might there be network latency differences?
On the server, run perfmon.msc and watch the counters, what's maxing out?
Related
I have 17 simple data entry applications(.net version is 3.5, designed in asp.net, coding language is c# and database is Oracle 10g) hosted under one application pool which is configured on IIS7 as .Net Framework Version = v2.0, Manged pipeline mode = Classic. My server is Windows server 2008 r2 64 bit with 32 GB ram.
Problem is one of my application started responding slowly, it was working fine before but now even pressing the tab key takes 2 to 3 seconds.
To check the problem I debugged the application in visual studio 2008 and it was working fine, then I configured the IIS7 on my PC and hosted the application from it and it was working fine( surprisingly my pc only have 4GB of ram and 32 bit windows 7 as operating system.)
I also tried DebugDiag on server to check the performance of w3wp.exe but couldn't find anything.
I also compared both the hosted applications (one from my local PC and one from server) using Firebug and fond under the .net tab that application hosted from server is taking more time, but I don't know the reason.
I also know for sure that database is not responding slow.
If someone can advice me how to check the problem that would be great,any advice would be appreciated.
Many thanks.
I'm hosting 7 websites on a single production server (virtual) at 2.53 Ghz (2 CPU) and 8GB of RAM on WIN SERVER 2008 R2 Enterprise 64 Bit.
Web server is IIS 7 and all of the websites are with .NET Framework 4.0 application pool.
My current memory usage is about 4.16 GB out of 8GB and w3wp.exe is the most process which consuming most of the memory usage (about 1.6 GB at this time) followed by sqlservr.exe with (1.5 GB) usage.
What I would like to do is to know which website out of 7 is consuming the most memory so that I could have a look.
I've tried Process Explorer and Resource monitor but it could only show how much rem taken by w3wp.exe but not individual website's usage.
Is there a way where I could pin point the memory hogger?
You could do a memory dump using Microsoft's Debug Diag tool.
Basic process is:
Launch DebugDiag
Cancel Wizard
Click "Processes" tab
Select w3wp
Right-click and select "Create full dump"
Snigger quietly to yourself because you said "dump"
Once dump is complete (snigger again), click "Advanced Analysis" tab
Use the 2 Memory Pressure Analyser scripts to see if you can see what objects are using a lot of memory.
I would advise doing this in combination with Uri May's answer, as otherwise you will likely waste a lot of time.
You can configure each web site to use different app pool, that way you'll have a w3wp.exe process for every web site of the 7 websites you host. After that you can use the tool in the following this link to find out which of the websites is causing the leak by tracing the PID of the w3wp.exe with biggest memory consumption.
In windows task manager you can see which app pool is running each w3wp.exe simply by showing the "user" column. This is because each app pool typically runs with its own user. They made it a bit harder to see this in Windows 2012 server - you need to click on "details" tab first.
When I deploy my ASP.net 4 website on newly installed IIS 6 on Win Server 2003 R2 or on IIS 7 on Windows 2008 R2, I have a very good (actually instant) access to my website pages while calling them locally, but while trying to access them from any other intranet computer, the speed slows down very badly and I can not find what is the problem. It has been become a major problem for me and my job and I've been looking for a solution but I've not detected any solutions already. Would you please helping me?
By the way the users of this website will be at max 20 persons and I've deployed my app on a very very powerful dedicated server with about 64GB of RAM and 16 CPU cores.
Thank you so much.
This could be created by many different things such as:
Incorrect IIS configuration
Incorrect Routing
Database Latency
Server Over utilization
I would start by seeing if a static HTML page with no code is delivered quickly. If yes then I would look at using ASP.NET Tracing as a starting point to see where the problem in the code may be. If No then I would look at the IIS and routing configuration for your network.
I changed to forms authentication and I am getting very good speed results.
I know it depends, but I am just curious what specifications others are using to run a simple site with a MS SQL Server back-end. What is recommended for the application, not the database?
If you're not talking about the database, I would say that running a simple MVC web application you would just need enough RAM to run whatever Windows OS you plan on deploying it under. You shouldn't need any more than the recommended amount.
So for example, here are the Windows Server 2008 requirements.
Would have to agree with Joe, the recommended RAM for running the OS should be sufficient. However, when you start to use resource hungry tools like SQL Server I would always recommend adding at least 1 GB.
You can run a simple MVC site on Windows XP with IIS 5.1 and SQL Server 2005 Express. Here are the system requirements for Windows XP.
RAM is so cheap now I would go with at least 2 GB.
I have one ASP.NET website having following associated components
ASP.NET framework 3.5
MS Chart
AJAX Components
Connection with external webservice for data
Oracle 10g Enterprise edition
I am going to deploy all web site component, database, email server and FTP service under same hardware.
Here I would like to know what are the required configuration of Windows Server 2003 to meet above requirements, like RAM, Processor, etc.
Please trigger me if I missed inputs.
It depends more on the load, the size, the complexity of the app and the performance expected, than in the components.
I mean: You can run this requirements with modest hardware, but if your app in heavy or your users are thousands, you will need another beast.