verificar ver rendimiento plan optimizar memoria historial from ejecutadas datos consumo consultas cached cache c# sql sql-server wcf

c# - ver - No hay suficiente memoria del sistema en el conjunto de recursos ''predeterminado'' para ejecutar esta consulta. en sql



ver consultas ejecutadas en sql server (1)

Tengo un servicio en ejecución que recibe 50-100 consultas por minuto. Y estas no son consultas de alto costo. Este servicio ha estado funcionando durante unos 3-4 meses sin ningún error.

De repente, hace unos días, comenzó a dar "No hay memoria del sistema insuficiente en el conjunto de recursos ''predeterminado'' para ejecutar esta consulta". error de vez en cuando. Cuando investigo el problema, vi que sqlservr.exe estaba usando ~ 1.5 gb de ram y% 25 de CPU (todos de 1 / 4CPU). Y cuando reinicié el sqlservr.exe el ram comienza desde ~ 50mb y aumenta lentamente hasta que se convierte en ~ 1.5gb, lo que provoca fallos en las aplicaciones que lo utilizan.

Después de investigar un poco, me di cuenta de que se debe a la edición del servidor SQL que utilizo. Era una edición expresa que limitaba los números a esos. Así que actualicé mi servidor sql de ''2008r2 express'' a ''2012 enterprise'' . Cuando comencé el servicio, pensé que mis problemas finalmente habían terminado, ya que el servicio usa solo ~ 60 mb de memoria, pero en una hora, desafortunadamente, el mismo problema comenzó a ocurrir, pero esta vez la memoria utilizada que veo en el administrador de tareas de Windows sigue siendo ~ 60 mb, No excediendo ningún limite.

Utilizo EntityFramework como ORM en un servicio wcf. Y junto con él tengo el sistema SqlQueryNotification (intermediario y SqlQueryNotification ) para algunas operaciones de almacenamiento en caché.

¿Me faltan algunos puntos de configuración cruciales? ¿O 6 gb de memoria y mi 4 CPU realmente no es suficiente para esto? Pero no puede ser porque la misma carga fue así durante 3 meses y no hubo ningún error en ese entonces, y tampoco hay ningún cambio de códigos.


SQL Server comenzará con tanta memoria como sea necesario, luego irá aumentando lentamente hasta que use todo lo asignado en las Propiedades del servidor:

No liberará nada de esta memoria hasta que se reinicie el servicio; esto es por diseño

Generalmente se recomienda dejar 2ish GB para el sistema operativo, y debe tener en cuenta que cualquier otro procesamiento se ejecute en el mismo servidor que SQL. Generalmente se recomienda tener SQL Server en su propio servidor sin que se ejecute nada más allí.

Dicho esto, 1.5 GB de RAM para SQL Server no es mucho. Si no tiene más disponibles, puede ser hora de agregar algunos o actualizar el servidor.

Ver también: Technet , Brent Ozar.