¿Cómo controlar el uso excesivo de ram por SQL Server?


13

El servidor de base de datos que estoy usando ejecuta 6 instancias diferentes de SQL Server. Tiene 48 GB de RAM. Y uno de ellos consume más de 10 GB de RAM, el consumo total es de 20 GB por ahora. El consumo de RAM está creciendo continuamente. Un par de días antes usaba más de 40 GB de RAM y el servidor respondía muy lentamente. La aplicación muestra los problemas de bloqueo al guardar datos.

Entonces reinicié los servicios de SQL Server.

Tan pronto como se reiniciaron los servicios, el uso se redujo a 4 GB, pero ahora está creciendo. Y me preocupa que crezca hasta 40 GB en 4 o 5 días y ralentice el servidor.

El reinicio del servicio no es la buena opción, supongo.

También descubrí de diferentes fuentes que podemos establecer el tamaño máximo de uso de memoria para SQL Server. Y no estoy muy seguro de si esto ayudará o no. No puedo probar esto porque el servidor está utilizando la base de datos de producción y sería un riesgo si el servicio se detiene al modificar la configuración en SQL Server.

¿Alguien puede ayudar con este problema?


1
Por defecto, SQL usará la mayor cantidad de RAM posible para maximizar su rendimiento, esto es bueno, significa que está almacenando consultas y resultados comunes para hacer que su aplicación sea más rápida. Solo usará RAM hasta el límite en el que el sistema operativo informa que puede ocurrir la búsqueda. Puede anular este comportamiento. Consulte esta documentación de MS: Cómo ajustar el uso de la memoria utilizando las opciones de configuración en SQL Server. Esto también puede ser útil: Cómo determinar las configuraciones de configuración adecuadas de SQL Server

44
¡ NO es un problema, es el comportamiento diseñado y predeterminado para SQL Server! Y sí, reiniciar el proceso de SQL Server es una idea horrible ..... SQL Server almacena en caché tantos datos e páginas de índice en la memoria como sea posible, de esta manera está optimizando el rendimiento general del sistema. Esa es la razón por la que una máquina SQL Server siempre debe ser un servidor dedicado , sin hacer nada más que SQL Server.
marc_s

Sí lo tengo. Está diseñado de esa manera. Pero cuando el servidor sql usa gran parte de la memoria, está ralentizando el servidor y haciendo que se agoten los informes. Entonces quiero evitar que el servidor SQL use memoria limitada.

44
En realidad, si SQL Server usa tanta memoria como sea posible, diría que eso haría que sea menos probable que tenga dificultades para entregar informes. Es cuando restringe artificialmente SQL Server (o coloca demasiadas instancias en un cuadro que compiten por recursos) donde verá problemas debido a concesiones de memoria y otros problemas.
Aaron Bertrand

Pero me pregunto por qué de repente comenzó a mostrar los informes bien después de reiniciar el servicio del servidor SQL. ¿Puede darse el caso de que demasiados clientes estuvieran usando la aplicación debido a que los informes no se mostraban?

Respuestas:


14

Eso es por diseño. Se supone que SQL Server usa toda la memoria disponible, ya que está almacenando más y más datos en la memoria para que no sea necesario volver al disco para obtener la misma memoria una y otra vez.

Si necesita limitar la cantidad de memoria que usa una sola instancia de SQL Server, puede hacerlo en SQL Server Management Studio haciendo clic con el botón derecho en el nombre de la instancia dentro del Explorador de objetos y seleccionando propiedades. Luego seleccione la pestaña de memoria y establezca la cantidad máxima de memoria que SQL Server podrá usar. Ahora, esto no va a limitar todos los aspectos de SQL Server a esa cantidad de memoria. Esto solo controla el grupo de búferes y la caché del plan de ejecución. Esta configuración controla cosas como CLR, Texto completo, la memoria real utilizada por los archivos exe de SQL Server, el Agente SQL, los procedimientos almacenados extendidos, etc. Sin embargo, estas otras cosas generalmente no necesitan tanta memoria, es la agrupación de almacenamiento intermedio y la caché del plan de ejecución que necesitan la mayor parte de la memoria.

Si establece esta configuración en una instancia, querrá establecerla en todas las instancias para que no se pisen entre sí.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.