Nous avons une machine dédiée SQL Server 2008 R2 qui rencontre d'étranges problèmes de mémoire. La machine elle-même dispose de nombreuses ressources, dont deux processeurs quadricœurs, 16 Go de RAM et 64 bits Windows Server 2008 R2 Enterprise (il s'agit d'un Dell PowerEdge 2950) .
Le problème étrange est que le système signale 82% de la mémoire utilisée, mais sqlservr.exe ne signale que 155 Mo en cours d'utilisation. La raison pour laquelle je soupçonne SQL Server est le problème parce que si je redémarre le processus sqlservr.exe, la consommation de mémoire revient à la normale pendant un certain temps.
Quelqu'un at-il des idées sur la façon de commencer à suivre ce problème?
Merci, Jason
sql-server-2008-r2
memory
process
police de caractères
la source
la source
Réponses:
Vous n'obtiendrez pas une image réelle de l'utilisation de la mémoire du Gestionnaire des tâches si le compte sous lequel le service s'exécute dispose des privilèges de verrouillage des pages en mémoire (modifier: selon le commentaire / lien de Mark Rasmussen). Pour déterminer la quantité de mémoire utilisée, vous pouvez consulter:
Je ne me souviens pas s'il y a un DMV ou une combinaison de cela qui vous donnera l'allocation totale de la mémoire mais ce qui suit en montrera la majeure partie.
Le second est généralement le plus intéressant, les allocations de pool de mémoire tampon par base de données. C'est là que la part des lions sera utilisée et il peut être utile de comprendre lesquelles de vos bases de données sont les plus gros consommateurs.
la source
Il y a un article récent de notre propre Brent Ozar qui traite de ce cas, lorsque le Gestionnaire des tâches n'affiche pas correctement la mémoire consommée par SQLServer et ses services supplémentaires. Vous pouvez le trouver ici: Guide Sysadmin de la mémoire Microsoft SQL Server .
Citation: " Pourquoi SQLServer.exe n'utilise-t-il pas beaucoup de mémoire?
Lorsque vous postez un bureau à distance sur un serveur et examinez le Gestionnaire des tâches, l'utilisation mem de sqlservr.exe semble toujours farfelue. Ce n'est pas la faute de SQL Server. Le Gestionnaire des tâches est un menteur sale et sale. (Je sais, il semble que le gars SQL déplace le blâme, mais restez avec moi pendant une seconde.) Sur les boîtes 64 bits, ce nombre est un peu plus précis, mais sur les boîtes 32 bits, il est tout simplement hors de propos . Pour obtenir une image précise de la quantité de mémoire utilisée par SQL Server, vous avez besoin d'un outil tel que Process Explorer et vous devez identifier tous les processus de SQL Server. Dans le serveur que je montre à droite, il y a deux instances SQL Server (affichées par sqlservr.exe), plus SQL Agent, SQL Browser et les outils de sauvegarde SQL Server. Il n'est pas rare de voir également SQL Server Analysis Services, Integration Services et Reporting Services s'exécuter également sur le même serveur, qui consomment tous de la mémoire.
Alors, combien de mémoire utilise SQL? Je vais vous faciliter la tâche. SQL Server utilise toute la mémoire. Période."
Je vous conseille donc d'essayer la requête de Mark et d'utiliser un meilleur outil pour le rapport de mémoire. Ou faites simplement confiance à Perfmon pour signaler la mémoire, pas au Gestionnaire des tâches.
la source
La quantité de mémoire utilisée par SQL, comme indiqué dans le gestionnaire de tâches, sera principalement le paramètre max-memory. Voici comment fonctionne le paramètre min / max:
Lorsque SQL Server démarre, il commence à prendre de la mémoire jusqu'au paramètre de mémoire minimale. À mesure que vos besoins SQL augmentent, SQL commencera à utiliser plus de mémoire jusqu'au paramètre max-memory. La mémoire reste alors à ce point (max) même lorsque l'utilisation de SQL diminue. Cela donne l'impression que SQL effectue d'énormes tâches et utilise autant de mémoire. En réalité, cette mémoire est réservée par SQL.
En cas de pression de mémoire non SQL sur le serveur, SQL libère de la mémoire jusqu'au point de configuration de la mémoire minimale. C'est ainsi que les paramètres de mémoire sont utilisés. Vous pouvez utiliser les scripts de Mark pour voir comment SQL utilise cette mémoire.
la source