Principale utente con più risposte
RAM esaurita

Domanda
-
Buongiorno a tutti,
Ho un Server standard 2008 R2 con 32GB di RAM.
Sul server girano due istanze SQL (un database per il gestionale ed un piccolo database per la gestione di ESET ERA).Da qualche giorno, i servizi "SQL Anywhere Network Server" e "SQL Server Windows NT - 64bit" mi stanno prosciugando la RAM arrivando al punto che, con 1GB disponibile, mi trovo costretto a riavviare il server perchè nessuno riesce più a lavorare.
Qui sotto ho appena eseguito uno screen della situazione (server riavviato 50minuti fa).
Al server si collegano massimo 10 client con l'applicazione del gestionale (quindi no RDP o simili).
Ho indagato sui due servizi: "dbsrv12.exe" è collegato ad un servizio di sincronizzazione tra il nostro gestionale interno ed uno remoto mente, gli altri due, non riesco a capire a cosa siano collegati.
Cercando in internet ho letto di gente che diceva "è normale" che SQL intasi tutta la RAM e che, eventualmente, Windows ne richiede indietro se necessario... Però non penso che così sia.
Ho già escluso virus e/o accessi non presidiati.
Detto ciò, anche se SQL si prende tutta la RAM, dove posso impostare un limite di utilizzo RAM per SQL? Vorrei impostargli un massimo di 4GB cadauno, così da non uccidermi la velocità.
Attendo un vostro feedback ed eventualmente fornirvi maggiori info.
Grazie,
Federico
Risposte
-
Invece è proprio come hai letto....SQL Server di solito tende a saturare tutta la memoria perché di default viene utilizzato un metodo di allocazione dinamico.
E' possibile comunque configurare la gestione della memoria da parte di SQL Server, in modo da limitare l'utilizzo massimo:
https://docs.microsoft.com/it-it/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-2017- Contrassegnato come risposta Alessandro AlpiMVP, Moderator lunedì 9 luglio 2018 10:49
- Contrassegno come risposta annullato Alessandro AlpiMVP, Moderator lunedì 9 luglio 2018 10:49
- Proposto come risposta Alessandro AlpiMVP, Moderator lunedì 9 luglio 2018 10:49
- Contrassegnato come risposta Fabrizio-GMVP, Moderator lunedì 23 luglio 2018 20:54
Tutte le risposte
-
Invece è proprio come hai letto....SQL Server di solito tende a saturare tutta la memoria perché di default viene utilizzato un metodo di allocazione dinamico.
E' possibile comunque configurare la gestione della memoria da parte di SQL Server, in modo da limitare l'utilizzo massimo:
https://docs.microsoft.com/it-it/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-2017- Contrassegnato come risposta Alessandro AlpiMVP, Moderator lunedì 9 luglio 2018 10:49
- Contrassegno come risposta annullato Alessandro AlpiMVP, Moderator lunedì 9 luglio 2018 10:49
- Proposto come risposta Alessandro AlpiMVP, Moderator lunedì 9 luglio 2018 10:49
- Contrassegnato come risposta Fabrizio-GMVP, Moderator lunedì 23 luglio 2018 20:54
-
Ciao Federico,
come hai fatto a determinare che il motivo della lentezza è imputabile alla scarsità di RAM residua?
Non potrebbe essere invece che i vari client eseguono contemporaneamente varie query pesanti? In questo caso potrebbe essere il disco il vero collo di bottiglia. Prova ad usare il SQL Profile per capire che query stanno passando. -
Mi unisco anche io. Hai verificato i vari counter come la Page Life Expectancy, il buffer cache hit ratio, i checkpoint e i lazy write, le letture da disco effettive, le crescite di memory grants? Giusto per darti qualche hint.
ciao
Alessandro Alpi - Data Platfomr MVP - CTO & Co-Founder Engage IT Services S.r.l.