Uso extraño de memoria en Windows Server 2008 R2

20

Espero que alguien pueda ayudar. Tenemos una máquina Windows Server 2008 R2 con 16 GB de RAM que sigue consumiendo toda su memoria disponible. Nada en el Administrador de tareas o en el Monitor de recursos revela ningún proceso que use memoria por encima de 300 MB ... pero el uso de memoria en el servidor es de 15.7 GB.

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

Las únicas cosas que se ejecutan son SQL Server 2008 e IIS7.5 (con ASP.Net).

Nota: El uso de RAM después de un reinicio comienza bajo y sube. Después de una semana más o menos seguimos encontrándonos en esta situación.

¿Cómo puedo descubrir qué está comiendo toda nuestra memoria? :(

Django Reinhardt
fuente
1
¿Cómo exactamente "después de haber limitado el uso de RAM del servidor SQL (min / max) a 13 GB, esto no debería volver a ocurrir"? Estoy ejecutando una máquina Win 2008 R2 con SQL 2008 R2 y me encuentro con el mismo problema.
Es una configuración dentro de SQL Server Studio. ¡Buena suerte!
Django Reinhardt
1
@ user72232: msdn.microsoft.com/en-us/library/ms178067.aspx
Tim Schmelter

Respuestas:

15

¿Es este un servidor de 64 bits? ¿Tiene habilitadas las políticas de bloqueo de páginas en la memoria local? Es probable que SQL consuma el resto de su memoria Si observa los contadores de perfmon verá la asignación de memoria

Aquí hay un artículo que lo explica en profundidad.

También puede ver los contadores en 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)' )
CPU_BUSY
fuente
2
Esto explica todo. El uso de la memoria era "usar todo lo disponible" (es decir, 2000 TB) y con las páginas bloqueadas en la RAM, no todo tenía acceso a él cuando estaba en uso. Habiendo ahora limitado el uso de RAM del servidor SQL (min / max) a 13GB, esto no debería volver a ocurrir. Ahora también tengo varias herramientas disponibles para vigilar cualquier cambio. ¡Gracias por tu ayuda!
Django Reinhardt
>> Ahora también tengo varias herramientas disponibles para vigilar cualquier cambio. ¿Qué herramientas usaste?
David Christiansen
6

Prueba rápida: reinicie SQL Server.
Otra prueba rápida: reiniciar IIS.

Sabrá con certeza si uno de ellos es el culpable o si tiene que buscar en otro lado.

Massimo
fuente
¡Parece que SQL FUE el culpable!
Django Reinhardt
3

Puede ser útil usar RamMap para ver a dónde va su memoria.

Sergei
fuente
1

¿Estás experimentando algún problema relacionado con la memoria?

¿El uso de la memoria se vuelve más alto que la memoria instalada real, o simplemente se llena y permanece allí?

Si la memoria se llena pero no tienes ningún problema, entonces solo la caché está haciendo su trabajo; memoria se realeased automáticamente siempre y cuando usted realmente lo necesita.

Si el uso de la memoria supera el límite físico y el servidor se detiene, está experimentando una pérdida de memoria y definitivamente debería depurarlo.

Algunos artículos interesantes sobre el tema "caché":

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

Massimo
fuente
Bueno, no pudimos instalar ninguna actualización crítica de Windows sin reiniciar el servidor porque se estaba quedando sin RAM. Bastante ridículo Lo que sea que lo estaba usando, no quería devolverlo.
Django Reinhardt
0

¿Ha inspeccionado Perfmon (específicamente los contadores SQL), como lo sugirió alguien en su otro hilo?

mfinni
fuente
1
Sí, pero "inspeccionar Perfmon" es más complicado de lo que parece.
Django Reinhardt
0

Lo primero es, como se ha dicho antes, repararlo y ver si eso resuelve el problema.

En segundo lugar, si eso no funcionó, use Process Explorer para ver mejor el uso de su memoria. Vaya al menú Ver, luego seleccione Columnas, Memoria de proceso y verifique las opciones Bytes privados, Tamaño virtual y Tamaño de conjunto de trabajo. Vea si eso indica qué tiene la culpa aquí.

Un enfoque drástico sería tratar de detener los servicios. IIS, por ejemplo, puede ser una pérdida total de memoria si tiene grupos de aplicaciones y jardines web mal configurados (demasiados), por lo que es un candidato.

¡Buena suerte!

Maximus Minimus
fuente