Tengo un único nodo SQL2012 SP4 que ejecuta varias bases de datos.
El servidor tiene 20 GB de memoria disponible, 14 GB asignados a SQL (nada más se ejecuta en la caja).
Cada pocos minutos, SQL vuelca todo el caché del búfer. La esperanza de vida de la página llega a cero, los descriptores de la memoria caché del búfer muestran que no hay nada en la memoria caché.
Eché un vistazo a las notificaciones del monitor de recursos y las notificaciones rebotan desde alta / constante / baja cada pocos milisegundos:
RESOURCE_MEMPHYSICAL_HIGH RESOURCE_MEM_STEADY RESOURCE_MEMPHYSICAL_LOW
Con marcas de tiempo que están separadas por varios milisegundos. El PLE es esencialmente un patrón de diente de sierra.
He visto esto suceder antes con SQL2012 SP1 y esta pregunta:
No se utilizan páginas gratuitas de SQL Server 2012 en la memoria caché del búfer
Parece ser un problema similar, aunque ya he actualizado a SP4.
He intentado activar LPIM para la cuenta de servicio y he intentado jugar con la configuración de memoria máxima. La disminución de la memoria máxima parece haber causado que la memoria caché del búfer se vacíe con más frecuencia.
¿Alguna idea de qué verificar a continuación?
La carga de trabajo del servidor es literalmente nada (estoy desplazándome por las listas de elementos en un sistema ERP y llega a unos 40-50 MB antes de que el caché simplemente vuelva a caer).
Es interesante porque actualicé desde SP1 para tratar de solucionar esto: el caché estaba llegando a alrededor de 500 MB. Desde entonces, bajé la configuración de memoria máxima a 14 GB, lo que parece haber empeorado las cosas.
Me pregunto si Windows está entrando en pánico y arrojando notificaciones incorrectas para la presión de la memoria en SQL; se deduce que el servidor con la memoria máxima configurada como ilimitada parecía ejecutarse correctamente, pero nunca llenó el caché más de unos pocos cientos de MB, pero ahora apenas llega a 50 ...
Más información: para los que preguntaron
Número de núcleos: 4
Tamaño de la base de datos: 80 GB
El registro de errores muestra: A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: 0 seconds. Working set (KB): 247928, committed (KB): 495656, memory utilization: 50%.
Resultados de ejecutar scripts desde este enlace: https://www.sqlskills.com/blogs/jonathan/identifying-external-memory-pressure-with-dm_os_ring_buffers-and-ring_buffer_resource_monitor/
No estoy seguro de cómo interpretar esto: parece que hay presión de memoria interna y externa en varios momentos.
Aún más información:
Este es un invitado de Hyper-V sentado en un host con 96 GB de RAM total, de los cuales aproximadamente la mitad se asigna a los invitados.
Los síntomas parecen similares a esto:
SQL Server 2012 x64: no se puede asignar de forma segura más del 50% de RAM
Sin embargo, cuando asigné 14 GB a SQL, los síntomas aparecieron de inmediato (apenas se confirmaron 3 GB de la memoria del servidor)
Anoche superé la memoria del invitado a 32 GB y el problema desapareció, pero solo veo 14 GB de memoria total del servidor (y el negocio que ejecuta el DB está ocupado esta mañana y es cuando generalmente tienen sus problemas de rendimiento).
Alrededor de 8-9 GB de datos en el caché en este momento, parece ser estable.
Parece sugerir que 20 GB son suficientes para la carga de trabajo en este cuadro. Estoy feliz de dejarlo con 32 GB por ahora, pero realmente me gustaría llegar al fondo de esto para poder configurar mejor las VM / SQL.
¡Seguiré cavando y actualizando si encuentro la respuesta!
Aún más más información:
No reinicié SQL después de encender LPIM (sin darme cuenta de que era un requisito), pero dejé esta configuración y reinicié para actualizar la memoria, así que ahora no estoy seguro de si el aumento de memoria o LPIM ha aliviado los problemas.
Saltará esta noche cuando el servidor esté inactivo y verificará nuevamente cómo se ve a 20 GB.
Aún más Más información:
Actualmente, el servidor está funcionando bien con 32 GB asignados y no hemos visto el problema desde entonces. Si esto vuelve a aparecer, volveré a esta pregunta y seguiré investigando.
Actualmente sigue siendo un misterio, pero supongo que solo estoy enmascarando los problemas en este momento.