Tenemos un conjunto de instancias de SQL Server (2008 R2) que se ejecutan en el mismo servidor virtual. Cada instancia representa una etapa en nuestro ciclo de desarrollo (Dev / Test / Stage / etc.). Todas las instancias deben estar en línea en un momento dado, pero la carga tiende a aislarse en una instancia a la vez, dependiendo de dónde nos encontremos en el ciclo de vida de la versión.
SQL Server parece capturar y retener cualquier cantidad de memoria que establezcamos como máximo. Lo que me gustaría saber si hay alguna forma de configurar las instancias para que sean "inteligentes" sobre el consumo de memoria para que no se bloqueen entre sí para obtener memoria cuando sea necesario.
sql-server
sql-server-2008-r2
Phil Sandler
fuente
fuente
Respuestas:
SQL Server usará la mayor cantidad de memoria que pueda arrojarle (más o menos), y siempre es aconsejable establecer un límite en cada instancia. La configuración predeterminada es 2147483647MB.
Dependiendo de su uso y sus propias circunstancias únicas, su configuración puede variar, pero normalmente un buen punto de partida es establecer la memoria máxima del servidor entre 75 y 90 por ciento, dependiendo de la cantidad de RAM que tenga. Glenn Berry comparte una buena indicación hace unos años AQUÍ .
Si tiene varias instancias activas en un servidor, es posible que deba compartir los recursos entre ellas, por ejemplo, si tiene 32 GB de RAM con 3 instancias, debe asignar alrededor de 9500 MB a cada instancia. Cuando usa solo una instancia a la vez, las otras no liberarán la RAM que están usando. Puede liberar su RAM deteniendo el servicio.
Cuando tiene otras aplicaciones / servicios en ejecución, es posible que deba ajustarse la cantidad de memoria para acomodarlos.
fuente