Mémoire système insuffisante dans le pool de ressources "par défaut" pour exécuter cette requête. sur sql

j'ai un service courant qui reçoit 50-100 requêtes par minute. Et ce ne sont pas des requêtes à coût élevé. Ce service fonctionne depuis environ 3-4 mois sans aucune erreur.

tout à coup il y a quelques jours il a commencé à donner "mémoire système insuffisante dans le pool de ressources "par défaut" pour exécuter cette requête." erreur de temps en temps. Quand j'ai enquêté sur le problème, j'ai vu que sqlservr.exe utilisait ~ 1,5 Go de ram et %25 de CPU (tout de 1/4CPU). Et quand j'ai redémarré l' sqlservr.exe la ram commence à partir de ~50mb et augmente lentement jusqu'à ce qu'elle devienne ~1,5 Go, puis conduit à des plantages dans les applications qui l'utilisent.

Après j'ai fait peu de recherche, j'ai pensé qu'il est causé par l'édition de sql server que j'utilise. C'était express edition limitant les nombres à ceux-là. J'ai donc mis à jour mon serveur sql à partir de '2008r2 express''2012 enterprise'. Quand j'ai commencé le service, j'ai pensé que mes problèmes étaient enfin terminés, puisque le service utilise seulement ~60mb de mémoire, mais dans une heure malheureusement le même problème a commencé à se produire, mais cette fois la mémoire utilisée que je vois sur windows Gestionnaire des tâches est encore ~60mb, n'excessant aucune limite.

j'utilise <!-Comme ORM dans un service wcf. Et avec elle j'ai SqlQueryNotification(courtier et d'autres trucs) pour certaines opérations de caching.

Est-ce que je manque des points de configuration cruciaux? Ou 6gbs de mémoire et mon 4 CPU n'est vraiment pas assez pour ça? 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 aucun changement de codes.

ram allocated

ram usage

18
demandé sur ROMANIA_engineer 2014-08-12 18:16:39

1 réponses

SQL Server commencera avec autant de mémoire que nécessaire, puis augmentera lentement jusqu'à ce qu'il utilise tout ce qui lui est alloué dans les propriétés du serveur:

enter image description here

il ne libérera aucun de ces souvenirs jusqu'à ce que le service soit redémarré; c'est par conception.

il est généralement recommandé de laisser 2ish GB pour L'OS, et vous devez être attentif à tout autre traitement tournant sur le même serveur que SQL. Il est généralement recommandé D'avoir SQL Serveur sur son propre serveur sans que rien d'autre ne s'y exécute.

cela dit, 1,5 Go de RAM pour SQL Server n'est pas beaucoup. Si vous n'avez pas plus disponible, il peut être temps d'en ajouter ou de mettre à jour le serveur.

Voir aussi: Technet, Brent Ozar

14
répondu Dave.Gugg 2016-10-04 13:16:14