Strano utilizzo della memoria in Windows Server 2008 R2


20

Spero che qualcuno possa aiutare. Abbiamo una macchina Windows Server 2008 R2 con 16 GB di RAM che continua a consumare tutta la sua memoria disponibile. Nulla in Task Manager o Resource Monitor rivela alcun processo che utilizza memoria superiore a 300 MB ... ma l'utilizzo della memoria sul server è 15,7 GB.

https://i784.photobucket.com/albums/yy129/ThunderPeel2001/ram-usage.gif

Le uniche cose in esecuzione sono SQL Server 2008 e IIS7.5 (con ASP.Net).

Nota: l'utilizzo della RAM dopo un riavvio si avvia in modo insufficiente e aumenta. Dopo circa una settimana continuiamo a trovarci in questa situazione.

Come posso scoprire cosa sta mangiando tutta la nostra memoria? :(


1
In che modo esattamente "Avendo ora limitato l'utilizzo della RAM di SQL Server (min / max) a 13 GB, questo non dovrebbe succedere di nuovo."? Sto eseguendo una macchina Win 2008 R2 con SQL 2008 R2 e sto riscontrando lo stesso problema.

È un'impostazione all'interno di SQL Server Studio. In bocca al lupo!
Django Reinhardt,

Risposte:


15

Si tratta di un server a 64 bit: sono abilitate le pagine di blocco nella politica locale di memoria? È probabile che SQL stia consumando il resto della memoria. Se guardi i contatori di perfmon vedrai l'allocazione della memoria

Ecco un articolo che lo spiega in profondità

È inoltre possibile visualizzare i contatori in SQL

SELECT
    object_name
   ,Counter_name
   ,cntr_value
   ,ROUND(( cntr_value * 8192.0 ) / 1048576, 0) AS cntr_value_MB
FROM
    sys.dm_os_performance_counters
WHERE
    object_Name LIKE '%Buffer Manager%'
    AND RTRIM(counter_name) IN ( 'Free pages', 'Total pages',
                                 'Database pages' ) 
UNION SELECT
    object_name
   ,Counter_name
   ,cntr_value
   ,ROUND(( cntr_value / 1024 ), 0) AS cntr_value_MB
FROM
    sys.dm_os_performance_counters
WHERE
    counter_name IN ( 'Target Server Memory (KB)',
                      'Total Server Memory (KB)' )

2
Questo spiega tutto. L'utilizzo della memoria era "usa tutti i disponibili" (cioè 2000 TB) e con le pagine bloccate nella RAM, quindi non tutto aveva accesso ad esso quando era in uso. Avendo ora limitato l'utilizzo della RAM di SQL Server (min / max) a 13 GB, questo non dovrebbe succedere di nuovo. Ora ho diversi strumenti disponibili per tenere d'occhio anche eventuali cambiamenti. Grazie per l'aiuto!
Django Reinhardt,

>> Ora ho diversi strumenti disponibili per tenere d'occhio anche eventuali cambiamenti - Quali strumenti hai usato?
David Christiansen,

6

Test rapido: riavvia SQL Server.
Un altro test rapido: riavvia IIS.

Saprai per certo se uno di loro è il colpevole, o se devi cercare altrove.


Sembra che SQL sia stato il colpevole!
Django Reinhardt,


1

Stai effettivamente riscontrando problemi relativi alla memoria?

L'utilizzo della memoria diventa mai superiore alla memoria installata effettiva o si riempie e rimane lì?

Se la memoria si riempie ma non si verificano problemi, è solo la cache a fare il suo lavoro; la memoria verrà automaticamente rilasciata se e quando ne avrai effettivamente bisogno.

Se l'utilizzo della memoria supera il limite fisico e il server si interrompe, si verifica una perdita di memoria e si dovrebbe sicuramente eseguire il debug.

Alcuni articoli interessanti sull'argomento "cache":

http://blogs.msdn.com/ntdebugging/archive/2007/11/27/too-much-cache.aspx
http://blogs.msdn.com/ntdebugging/archive/2007/10/10/the-memory -shell-game.aspx
http://blogs.msdn.com/ntdebugging/archive/2009/02/06/microsoft-windows-dynamic-cache-service.aspx


Beh, non siamo riusciti a installare alcun aggiornamento critico di Windows senza ripristinare il server perché continuava a rimanere senza RAM. Abbastanza ridicolo. Qualunque cosa lo stesse usando, non voleva restituirlo.
Django Reinhardt,


0

La prima cosa è, come è stato detto prima, rattopparlo e vedere se questo risolve il problema.

In secondo luogo, se non ha funzionato, utilizzare Process Explorer per vedere meglio l'utilizzo della memoria. Vai al menu Visualizza, quindi seleziona Colonne, Memoria di processo e controlla le opzioni Byte privati, Dimensione virtuale e Dimensione set di lavoro. Vedi se questo indica che cosa è la colpa qui.

Un approccio drastico sarebbe quindi quello di provare a interrompere i servizi. Ad esempio, IIS può essere un maiale di memoria totale se i pool di app e i web garden sono configurati in modo errato (troppi di essi), quindi è un candidato.

In bocca al lupo!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.