Ho un singolo nodo SQL2012 SP4 che esegue diversi database.
Il server ha 20 GB di memoria disponibili, 14 GB allocati a SQL (nient'altro in esecuzione sulla scatola).
Ogni pochi minuti SQL scarica l'intera cache del buffer. L'aspettativa di vita della pagina raggiunge lo zero, i descrittori della cache del buffer mostrano che non c'è nulla nella cache.
Ho dato un'occhiata alle notifiche di monitoraggio delle risorse e le notifiche rimbalzano da alta / costante / bassa ogni pochi millisecondi:
RESOURCE_MEMPHYSICAL_HIGH RESOURCE_MEM_STEADY RESOURCE_MEMPHYSICAL_LOW
Con timestamp distanti diversi millisecondi. Il PLE è essenzialmente un modello a dente di sega.
L'ho visto accadere prima con SQL2012 SP1 e questa domanda:
Pagine libere di SQL Server 2012 non utilizzate nella cache buffer
Sembra essere un problema simile, anche se ho già aggiornato a SP4.
Ho provato ad attivare LPIM per l'account di servizio e ho provato a fare confusione con l'impostazione di memoria massima. L'abbassamento della memoria massima sembra aver causato lo svuotamento più frequente della cache del buffer.
Qualche idea su cosa controllare dopo?
Il carico di lavoro del server è letteralmente nulla (sto scorrendo gli elenchi di elementi in un sistema ERP e arriva a circa 40-50 MB prima che la cache si riduca di nuovo).
È interessante perché ho eseguito l'aggiornamento da SP1 per provare a risolvere questo problema: la cache lì arrivava a circa 500 MB. Da allora ho ridotto l'impostazione di memoria massima a 14 GB, che sembra aver peggiorato le cose.
Mi chiedo se Windows stia andando nel panico e lanciando notifiche errate per la pressione della memoria su SQL - ne consegue che il server con la memoria massima impostata su illimitata sembrava funzionare ok ma non riempie mai la cache più di qualche centinaio di MB - ma ora arriva a malapena a 50 ...
Ulteriori informazioni: per coloro che hanno chiesto
Numero di core: 4
Dimensione del database: 80 GB
Il registro errori mostra: 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%.
Risultati dell'esecuzione degli script da questo link: https://www.sqlskills.com/blogs/jonathan/identifying-external-memory-pressure-with-dm_os_ring_buffers-and-ring_buffer_resource_monitor/
Non sono sicuro di come interpretarli: sembra che ci sia pressione della memoria interna ed esterna in varie occasioni.
Ancora più informazioni:
Questo è un ospite Hyper-V seduto su un host con 96 GB di RAM totale di cui circa la metà è assegnata agli ospiti.
I sintomi sembrano simili a questo:
SQL Server 2012 x64: impossibile allocare in modo sicuro più del 50% di RAM
Tuttavia, quando ho assegnato 14 GB a SQL, i sintomi sono entrati immediatamente (a malapena sono stati impegnati solo 3 GB di memoria del server)
Ieri sera ho ridotto la memoria del guest a 32 GB e il problema è scomparso, ma vedo solo 14 GB di commit della memoria totale del server (e il business che gestisce il DB è occupato questa mattina e questo è quando di solito hanno i loro problemi di prestazioni).
Al momento, circa 8-9 GB di dati nella cache sembrano essere stabili.
Sembra suggerire che 20 GB siano sufficienti per il carico di lavoro su questa scatola. Sono felice di lasciarlo con 32 GB per ora, ma mi piacerebbe davvero arrivare alla fine di questo in modo da poter meglio configurare le VM / SQL.
Continuerò a scavare e aggiornerò se trovo la risposta!
Ancora più informazioni:
Non ho riavviato SQL dopo aver attivato LPIM (non rendendomi conto che era un requisito) ma ho lasciato questa impostazione attiva e riavviato per aggiornare la memoria, quindi ora non sono sicuro se l'aumento di memoria o LPIM abbia alleviato i problemi.
Salterà su stasera quando il server è inattivo e controlla come appare di nuovo a 20 GB.
Ancora più Altre informazioni:
Attualmente il server va bene con 32GB allocati e da allora non abbiamo più visto il problema. Se si ripresenta, tornerò a questa domanda e continuerò a scavare.
Attualmente rimane un mistero, ma la mia ipotesi è che al momento sto solo mascherando i problemi.