Come spiegare l'utilizzo della memory in Windows Server al di fuori dell'elenco dei processi in esecuzione

Ho un Windows 2003 Server in esecuzione un po 'lento where il carica di impegno e l'utilizzo di file di pagine ticchetti su e fino fino a quando alla fine riavviare. Per risolvere questo problema, devo scoprire cosa consuma tutta la memory, e questo è il grande mistero.

Statistiche attuali dal Task Manager:

Physical Memory (K): 2096400 Commit Charge (K): 5364848 Page file usage: 5.11 GB 

Fine, quindi tiriamo in su SysInternals Process Explorer e controlliamo la dimensione del set di lavoro di tutto in esecuzione. Il più grande colpevole è un'istanza di Tomcat che utilizza WS di 121.980K, dimensione VM di 481.284K. Nulla in questo punto è vicino a spiegare la carica di 5 GB.

Passo successivo: SysInternals pslist : pslist -m , dividere l'output per colonna e calcolare le somme di colonne per i processi che vengono segnalati.

 SUM (Working Set) : 681,484 K SUM (Private Bytes): 593,424 K 

Devo fondamentalmente fraintendere ciò che gli strumenti stanno riferendo? Ho sempre avuto l'impressione che un sistema operativo effettivamente impegnerebbe molto less memory rispetto alla memory virtuale mappata da un process, a presupporre che in realtà non lo userà mai tanto e che guardare VM qui è un aringa rossa.

6 Solutions collect form web for “Come spiegare l'utilizzo della memory in Windows Server al di fuori dell'elenco dei processi in esecuzione”

JP, credo che il tuo commento che si tratta di un server di test di build / unit automatizzato che esegue less di codice stabile dice tutto. La mia ipotesi è che questo server deve essere riavviato frequentemente a causa del codice instabile in esecuzione probabilmente ha perdite di memory che ti danno i sintomi che stai vedendo. Le perdite di memory non verranno elencate in uno degli alberi di process dei processi in esecuzione poiché sono memory che viene afferrata da processi che non esistono più e sono ancora assegnati, anche se il process associato a loro è scomparso.

Ottieni una window di manutenzione frequente per consentire di riavviare automaticamente questa macchina, forse a notte, un paio di volte alla settimana o una settimana a seconda della velocità in cui questo comportmento inizia a presentare problemi di performance.

Abbiamo server Oracle Application Servers su Windoze un po 'di tempo che whereva essere riavviato due volte al giorno. Abbiamo licenziato gli utenti all'ora di pranzo e nel bel mezzo della notte each giorno. Questo è stato qualche anno fa, con le produzioni presumibilmente stabili da Oracle.

Spiacenti di incollare alcuni collegamenti – ma abbiamo usato alcune tecniche per trovare perdite di memory, utilizzando logparser e powershell, in modo da condividere.

http://blogs.msdn.com/debuggingtoolbox/archive/2008/08/22/powershell-script-chart-and-statistics-from-top-20-objects-leaking.aspx

(Il sito del debugger Never Doubt Thy è eccellente): http://blogs.msdn.com/carloc/archive/2007/09/14/something-you-need-to-know-before-start-debugging.aspx

Inoltre fornirò un collegamento all'ottima conoscenza di Mark Russinovich sull'utilizzo della memory su Windows:

http://blogs.technet.com/markrussinovich/search.aspx?q=memory&p=1

A corto di aprire i casi reali di Microsoft, il sito di Performance Team ha anche molta buona informazione: http://blogs.technet.com/askperf/Default.aspx?p=2

Lo strumento pricipale per aiutare a diagnosticare questo è perfmon. I contatori che guarderei (per cominciare) sono:

Memoria, Byte commessi è una misura della domanda di memory virtuale
Process, Set di lavoro, _Total memory virtuale in uso "attivo"
File di paging, file di pagina% in uso
Memoria, pagine / sec (questo non è necessariamente un indicatore di memory insufficiente, anche se tutti sembrano supporre che lo fa)
Memoria, Pagine Uscita / Sec quante pagine di memory virtuale sono state scritte nel file di pagina per liberare le pagine di pagina RAM per altri scopi each secondo

Memoria, byte di cache
Memoria, Pool non pagati byte
Memoria, pool byte pagato
Memoria, Codice di sistema Totale byte
Memoria, driver di sistema Totale byte

quando questa sum si avvicina a 2GB, dovrai avere problemi di performance in genere a causa dell'architettura a 32 bit

Memoria, MBytes disponibile – questo misura la quantità di RAM disponibile per soddisfare le richieste di memory virtuale (nuove allocazioni o per ripristinare una pagina dal file di pagina).

Vedi anche http://members.shaw.ca/bsanders/WindowsGeneralWeb/RAMVirtualMemoryPageFileEtc.htm

Quanto tempo ha funzionato quel server dall'ultimo riavvio? È un fatto sfortunato di vita che Windows ha perdite di memory. vale a dire la memory allocata non viene sempre rilasciata nel sistema. I sintomi sono esattamente quello che stai vedendo. Se non lo fai già, suggerisco di riavviare alless una volta alla settimana. Molti centri dati riavviano each giorno il sistema operativo Windows, poiché così facendo riduce notevolmente le chiamate di supporto. Naturalmente questo è molto più facile da fare quando si utilizzano i cluster perché non c'è tempo di scadenza.

Si dice che esista un sistema che abbia davvero capito le statistiche di memory di Windows, ma non l'ho mai incontrata.

Tuttavia non è di solito troppo difficile trovare un process di malfunzionamento. Provate a utilizzare Perfmon per esaminare i vari contatori di process come maniglie o errori di pagina / sec.

JR

Ulteriori pensieri: siete sicuri di essere in realtà a bassa memory. La cosa fondamentale è se stai facendo paging. Se non c'è paging, non sei a corto di memory. Utilizzando PerfMon dare un'occhiata al contatore Memory – Pages / sec.

Ricorda che il set di lavoro è il bit della memory che è effettivamente rappresentata dalla memory fisica REAL. si ha anche la carica virtuale di memory e Windows condivide la condivisione di codice, alcuni pezzi di MFC verranno condivisi tra molti e molti processi senza duplicare l'utilizzo della memory. Inoltre avete desiderio di continuo Windows per mantenere la cache del filesystem più grande ansible (l'ho visto balloon a 800 MB su un porttile da 2,5 GB prima).

La gestione della memory di Windows è molto robusta. Tuttavia, una volta che Windows avvia la ricerca, le cose diventano brutte e SEMPRE wherete lasciare spazio alla cache dei filesystem sempre sempre. Devo rovinare normalmente l'arresto e riavviare Firefox quando le mie tabs 80+ alimentano il consumo di memory fino a 1.2gb / 1.2 + gb.

Anche Windows riduce a poco a poco la linea, tra le pagine nella cache e le pagine elencate come set di memory / lavoro.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.