2012-05-31 16 views
6

De acuerdo con este question, quiero saber si asp.net's system.web.caching.cache es bueno para mí, o debería usar el almacenamiento en caché de la base de datos?Determinar la memoria utilizada por la caché asp.net en el alojamiento compartido

Entonces, necesito saber cuánta memoria está usando system.Web.caching.cache? Pero dado que estoy usando un servidor de alojamiento compartido, no puedo usar el administrador de tareas. ¿Hay alguna manera de determinar cuánta memoria usa system.web.caching.cache usando algún código?

Respuesta

6

Una forma rápida de ver la cantidad de memoria de trabajo que usa su aplicación es dirigirla a la colección de basura.

long bytes = GC.GetTotalMemory(false); 
txtMemoryUsed.Text = bytes.ToString(); 

y utilizar esta literales <asp:Literal runat="server" ID="txtMemorysUsed" EnableViewState="false" />

Pero, usted puede obtener más detalles utilizando el PerformanceCounter, por ejemplo, se puede obtener la cantidad de memoria virtual de las piscinas utilizadas por este código:

var oPerfCounter = new PerformanceCounter(); 
oPerfCounter.CategoryName = "Process"; 
oPerfCounter.CounterName = "Virtual Bytes"; 
oPerfCounter.InstanceName = "aspnet_wp"; 
txtMemorysUsed.Text = "Virtual Bytes: " + oPerfCounter.RawValue + " bytes"; 

Usted puede usar todos estos parámetros para obtener información para su grupo.

Processor(_Total)\% Processor Time 
Process(aspnet_wp)\% Processor Time 
Process(aspnet_wp)\Private Bytes 
Process(aspnet_wp)\Virtual Bytes 
Process(aspnet_wp)\Handle Count 
Microsoft® .NET CLR Exceptions\# Exceps thrown/sec 
ASP.NET\Application Restarts 
ASP.NET\Requests Rejected 
ASP.NET\Worker Process Restarts (not applicable to IIS 6.0) 
Memory\Available Mbytes 
Web Service\Current Connections 
Web Service\ISAPI Extension Requests/sec 

por ejemplo, estos parámetros obtienen la carga de la CPU.

oPerfCounter.CategoryName = "Processor"; 
oPerfCounter.CounterName = "% Processor Time"; 
oPerfCounter.InstanceName = "_Total"; 
txtOutPut.Text = "Current CPU Usage: " + oPerfCounter.NextValue() + "%"; 

referencia: http://msdn.microsoft.com/en-us/library/ms972959.aspx

relativa: Monitoring ASP.NET application memory from within the application

tengo prueba que en IIS y los trabajos locales.

+0

¿GC me da la memoria utilizada solo por la aplicación web actual? –

+0

@Mahdi en un entorno compartido, el grupo se ejecuta en muchos sitios, su sitio está vivo con otros sitios, excepto si ha solicitado un grupo "privado". (Así que no es solo la aplicación web actual, sino que es el grupo). Así que obtienes la memoria de tu grupo (incluidos otros sitios que funcionan juntos) – Aristos

+0

Mi panel de control es plesk, y parece que cada usuario tiene un grupo de aplicaciones. (Puedo detenerlo/iniciarlo o incluso limitar el uso de CPU de mis sitios). Entonces, ¿mi grupo de aplicaciones es privado? –

Cuestiones relacionadas