La memory système du pool de ressources est insuffisante pour exécuter cette requête. sur sql

J'ai un service courant qui obtient 50-100 requêtes par minute. Et ce ne sont pas des requêtes à coût élevé. Ce service a fonctionné pendant environ 3-4 mois sans aucune erreur.

Soudain, il y a quelques jours, il a commencé à donner "Il n'y a pas assez de memory système dans le pool de ressources" par défaut "pour exécuter cette requête." erreur occasionnellement. Lorsque sqlservr.exe le problème, j'ai vu que sqlservr.exe utilisait ~ 1,5 Go de RAM et 25% de CPU (tous de 1 / 4CPU). Et quand j'ai redémarré le sqlservr.exe le bélier commence à partir de ~ 50mb et augmente lentement jusqu'à ce qu'il devienne ~ 1.5gb puis conduit à des plantages dans les applications qui l'utilisent.

Après avoir fait un peu de search, j'ai pensé qu'il est causé par l'édition du server sql que j'utilise. C'était une édition express limitant les numéros à ceux-là. J'ai donc mis à jour mon server sql de '2008r2 express' vers '2012 enterprise' . Quand j'ai commencé le service, je pensais que mes problèmes étaient enfin terminés, puisque le service n'utilisait que ~ 60 Mo de memory, mais en une heure malheureusement le même problème commençait à se produire, mais cette fois-ci la memory utilisée ne pas dépasser les limites.

J'utilise EntityFramework comme ORM dans un service wcf. Et avec cela, j'ai le système SqlQueryNotification (courtier et autres) pour certaines opérations de caching.

Est-ce que je manque des points de configuration cruciaux? Ou 6gbs de memory et mon 4 CPU n'est vraiment pas suffisant pour cela? Mais ça ne peut pas être ça parce que la même charge était comme ça pendant 3 mois et il n'y avait pas d'erreur à l'époque, et il n'y a pas non plus de changement de code.

ram alloué

utilisation de RAM

SQL Server démarrera avec autant de memory que nécessaire, puis accélérera lentement jusqu'à ce qu'il utilise tout ce qui lui est alloué dans les propriétés du server:

entrez la description de l'image ici

Il ne libèrera aucune memory jusqu'à ce que le service soit redémarré; C'est par design.

Il est généralement recommandé de laisser 2 Go de Go pour le operating system, et vous devez être conscient de tout autre traitement exécuté sur le même server que SQL. Il est généralement recommandé d'avoir SQL Server sur son propre server sans rien d'autre.

Cela dit, 1,5 Go de RAM pour SQL Server n'est pas beaucoup. Si vous n'en avez plus, il est peut-être time d'en append ou de mettre à jour le server.

Voir aussi: Technet , Brent Ozar