web-dev-qa-db-fra.com

Utilisation étrange de la mémoire dans Windows Server 2008 R2

J'espère que quelqu'un pourra vous aider. Nous avons une machine Windows Server 2008 R2 avec 16 Go de RAM qui continue à consommer toute sa mémoire disponible par quelque chose. Rien dans Le gestionnaire de tâches ou le moniteur de ressources révèle tout processus utilisant une mémoire supérieure à 300 Mo ... mais l'utilisation de la mémoire sur le serveur est de 15,7 Go.

https://i784.photobucket.com/albums/yy129/ThunderPeel2001/ram-usage.gif

Les seules choses en cours d'exécution sont SQL Server 2008 et IIS7.5 (avec ASP.Net).

Remarque: RAM après un redémarrage commence à un niveau bas et progresse. Après environ une semaine, nous continuons à nous découvrir dans cette situation.

Comment puis-je découvrir ce qui mange toute notre mémoire? :(

20
Django Reinhardt

S'agit-il d'un serveur 64 bits - la stratégie locale de verrouillage des pages en mémoire est-elle activée? SQL consomme probablement le reste de votre mémoire Si vous regardez les compteurs perfmon, vous verrez l'allocation de mémoire

Voici un article qui l'explique en profondeur

Vous pouvez également afficher les compteurs en SQL

SELECT
    object_name
   ,Counter_name
   ,cntr_value
   ,ROUND(( cntr_value * 8192.0 ) / 1048576, 0) AS cntr_value_MB
FROM
    sys.dm_os_performance_counters
WHERE
    object_Name LIKE '%Buffer Manager%'
    AND RTRIM(counter_name) IN ( 'Free pages', 'Total pages',
                                 'Database pages' ) 
UNION SELECT
    object_name
   ,Counter_name
   ,cntr_value
   ,ROUND(( cntr_value / 1024 ), 0) AS cntr_value_MB
FROM
    sys.dm_os_performance_counters
WHERE
    counter_name IN ( 'Target Server Memory (KB)',
                      'Total Server Memory (KB)' )
15
CPU_BUSY

Test rapide: redémarrez SQL Server.
Un autre test rapide: redémarrez IIS.

Vous saurez avec certitude si l'un d'eux est le coupable, ou si vous devez chercher ailleurs.

6
Massimo

Il peut être utile d'utiliser RamMap pour voir où va votre mémoire.

3
Sergei

Êtes-vous réellement confronté à un problème lié à la mémoire?

Est-ce que l'utilisation de la mémoire devient plus élevée que la mémoire installée réelle, ou est-ce qu'elle se remplit et y reste?

Si la mémoire se remplit mais que vous ne rencontrez aucun problème, alors c'est juste le cache qui fait son travail; la mémoire sera automatiquement libérée si et quand vous en aurez besoin en fait.

Si l'utilisation de la mémoire dépasse la limite physique et que le serveur s'arrête, vous rencontrez une fuite de mémoire et vous devriez certainement la déboguer.

Quelques articles intéressants sur le sujet "cache":

http://blogs.msdn.com/ntdebugging/archive/2007/11/27/too-much-cache.aspx
http://blogs.msdn.com/ntdebugging/archive/2007/10/10/the-memory-Shell-game.aspx
http://blogs.msdn.com/ntdebugging/archive/2009/02/06/Microsoft-windows-dynamic-cache-service.aspx

1
Massimo

avez-vous inspecté Perfmon (en particulier les compteurs SQL), comme suggéré par quelqu'un dans votre autre thread?

0
mfinni

La première chose à faire, comme cela a été dit précédemment, est de le corriger et de voir si cela résout le problème.

Deuxièmement, si cela ne fonctionne pas, utilisez Process Explorer pour mieux voir votre utilisation de la mémoire. Allez dans le menu Affichage, puis sélectionnez Colonnes, Mémoire de processus et vérifiez les options Octets privés, Taille virtuelle et Taille de l'ensemble de travail. Voyez si cela indique ce qui est à blâmer ici.

Une approche drastique serait alors d'essayer d'arrêter les services. IIS par exemple peut être un cochon de mémoire totale si vous avez des pools d'applications et des jardins Web mal configurés (trop nombreux), c'est donc un candidat.

Bonne chance!

0
Maximus Minimus