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.
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? :(
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)' )
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.
Il peut être utile d'utiliser RamMap pour voir où va votre mémoire.
Ê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
avez-vous inspecté Perfmon (en particulier les compteurs SQL), comme suggéré par quelqu'un dans votre autre thread?
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!