web-dev-qa-db-fra.com

La mémoire système est insuffisante dans le pool de ressources par défaut pour exécuter cette requête

J'utilise SQL Server 2014 - 12.0.2269.0 (X64) sur Windows Server 2012 et je rencontre des problèmes de mémoire. Lorsque j'exécute une procédure stockée qui effectue un calcul assez "lourd", j'obtiens une erreur après quelque chose comme 10 minutes:

La mémoire système est insuffisante dans le pool de ressources "par défaut" pour exécuter cette requête.

Mon SQL Server possède plusieurs bases de données (comme 15, mais elles ne sont pas toujours utilisées en même temps). J'ai regardé le fichier journal de SQL Server (après avoir obtenu l'erreur) et j'ai vu beaucoup de lignes comme ceci:

2015-12-17 12: 00: 37.57 spid19s Interdiction des allocations de page pour la base de données 'Database_Name' en raison d'une mémoire insuffisante dans le pool de ressources 'par défaut'. Voir ' http://go.Microsoft.com/fwlink/?LinkId=33067 ' pour plus d'informations.

Un rapport est généré dans le journal avec la mémoire utilisée par chaque composant (je pense). Si j'interprète correctement le rapport, nous pouvons voir qu'il y a beaucoup de mémoire consommée par MEMORYCLERK_SQLBUFFERPOOL. Vous pouvez trouver le rapport ici: http://Pastebin.com/kgmk9dPH

J'ai également généré un rapport avec un graphique qui montre la même "conclusion":

![memory usage

Voici peut-être un autre rapport utile:

enter image description here

enter image description here

Notez que j'ai également vu cette erreur dans le journal:

2015-12-17 12: 04: 52.37 spid70 Échec d'allocation de la page en raison de la pression de la mémoire de la base de données: FAIL_PAGE_ALLOCATION 8

Voici quelques informations concernant la mémoire du serveur:

  • Mémoire totale sur le serveur: 16 Go

  • Mémoire allouée au serveur SQL: 12288 Mo

  • Mémoire physique utilisée (de sys.dm_os_process_memory): 9287 Mo

Si cela peut aider, le serveur n'héberge aucune base de données SharePoint.

15
tatchi

Bien que ce ne soit probablement pas une réponse exacte à votre problème, je le publierai de toute façon en espérant que cela puisse vous aider en quelque sorte.

Ce que vous voyez n'est pas le MEMORYCLERK_SQLBUFFERPOOL mais le MEMORYCLERK_SQLLOGPOOL occupant toute la mémoire.

Il existe un problème connu avec SQL 2012 SQL Server 2012 rencontre des erreurs de mémoire insuffisante . Même si vous exécutez 2014, il est possible que vous rencontriez le même problème (même si je n'ai pas trouvé d'élément de connexion pour 2014).

Il existe également ce problème connu pour 2014 et 2012 impliquant des reconstructions d'index et always on. Vous n'avez pas spécifié que vous l'utilisiez, mais le même bogue a peut-être d'autres déclencheurs: CORRECTIF: la mémoire cache SQL diminue et l'utilisation du processeur augmente lorsque vous reconstruisez un index pour une table dans SQL Server

Donc, ma meilleure suggestion pour l'instant est de mettre à jour la dernière CU et de voir si cela se produit toujours, car il y a eu quelques corrections autour de MEMORYCLERK_SQLLOGPOOL récemment. Puisque vous exécutez RTM avec seulement 2 correctifs de sécurité qui pourraient avoir un sens, il existe un SP1 + plusieurs CU disponibles.

Puisqu'il y a également une utilisation de mémoire assez élevée dans MEMORYCLERK_XTP utilisé par in-memory OLTP cet article peut vous aider à dépanner: Surveiller et dépanner l'utilisation de la mémoire