2012-05-31 9 views
6

In base a questo question, voglio sapere se il file system.web.caching.cache di asp.net è adatto a me, o dovrei utilizzare la memorizzazione nella cache del database?Determinare la memoria utilizzata dalla cache di asp.net nell'hosting condiviso

Quindi, ho bisogno di sapere quanta memoria viene utilizzata da system.Web.caching.cache? Ma dal momento che sto usando un server di hosting condiviso, non posso usare il task manager. C'è un modo per determinare quanta memoria viene utilizzata da system.web.caching.cache usando del codice?

risposta

6

Un modo rapido per vedere quante memoria di lavoro è utilizzata dall'applicazione per chiedere la raccolta dati inutili.

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

e utilizzare questi letterali <asp:Literal runat="server" ID="txtMemorysUsed" EnableViewState="false" />

ma è possibile ottenere ulteriori informazioni utilizzando l'PerformanceCounter, ad esempio, è possibile ottenere il numero di memoria virtuale le piscine utilizzate da questo codice:

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

È puoi usare tutti questi parametri per ottenere informazioni per il tuo pool.

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 

per esempio, questo parametri ottenere il carico della CPU.

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

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

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

ho test che su IIS locale e opere.

+0

GC mi fornisce la memoria utilizzata dall'applicazione Web corrente? –

+0

@Mahdi in un ambiente condiviso il pool viene eseguito su molti siti, il tuo sito è in vita con altri siti, tranne se hai chiesto un pool "privato". (quindi non è solo un'applicazione web corrente, ma è il pool). Quindi ottieni la memoria del tuo pool (compresi altri siti che funzionano insieme) – Aristos

+0

Il mio pannello di controllo è plesk e sembra che ogni utente abbia un pool di applicazioni. (Posso fermarlo/avviarlo o anche limitare l'utilizzo della CPU dei miei siti). Quindi, il mio pool di applicazioni è privato? –

Problemi correlati