Étant donné que vous avez déjà recherché les correctifs, je suppose que votre serveur est déjà à jour avec le dernier Service Pack Windows et qu'il dispose de toutes les mises à jour ? C'est toujours le meilleur point de départ.
Avec une taille de cache de 6 Go, nous parlons de dizaines de millions de résultats de DNS uniques (ce qui est absurde). Il est peu probable que vos clients fassent autant de requêtes DNS uniques. Dans les commentaires de votre question, vous indiquez que l'application effectue des recherches chaque fois qu'un client envoie des données au serveur. Je ne sais pas comment fonctionne l'application (je suppose qu'il s'agit d'une application web) sur votre serveur, mais je me demande si un événement ne crée pas des requêtes DNS uniques à chaque demande du client, requêtes qui sont retournées comme des domaines inexistants. Je suppose que si la requête DNS atteint un domaine avec un joker, elle peut renvoyer des réponses valides. Dans tous les cas, cela pourrait expliquer la taille énorme du cache.
Ipconfig /displaydns ne renvoie pas toujours la totalité du cache, ce qui expliquerait pourquoi vous ne voyez que 15-20 entrées.
Vous pouvez (du moins je peux) le confirmer en effectuant ce qui suit
Depuis une invite Powershell :
> ipconfig /flushdns
> [System.Net.Dns]::GetHostAddresses(“google.com”)
Vérifiez le cache DNS
> ipconfig /displaydns
Vous verrez probablement l'entrée Google.com. Notez la taille du cache à l'aide du gestionnaire de tâches (dans le gestionnaire de tâches, trouvez le service dnscache, cliquez dessus avec le bouton droit de la souris et sélectionnez aller au processus).
Exécutez maintenant la commande suivante, où ### est un grand nombre (j'ai utilisé 10 000). Notez que j'ai configuré mon serveur DNS local pour qu'il réponde à tous les sous-domaines .test avec un joker afin de ne pas toucher le serveur DNS de mon FAI 10 000 fois en peu de temps.
> $i = 0
> do {[System.Net.Dns]::GetHostAddresses(“blahblahfakedomain” + $i++ + “.test”)} while ($i –lt ###)
Pendant l'exécution de la commande, observez l'utilisation de la mémoire du processus de cache dans le Gestionnaire des tâches. Une fois la commande terminée, vérifiez le cache. Vous ne verrez probablement pas les ### quires que nous venons de générer, mais le processus de cache DNS n'a pas libéré la mémoire.
Dans mes expériences, j'ai pu récupérer la mémoire en vidant le cache DNS (10 000 requêtes représentent environ 2 mégas). Je ne sais pas pourquoi cela ne fonctionne pas pour vous. Peut-être parce que le cache est si gros ?
Quoi qu'il en soit, je propose la solution de rechange suivante :
Modifiez le MaxCacheTtl y MaxNegativeCacheTtl sous l'onglet HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Services\Dnscache\Parameters touche par ( http://support.microsoft.com/kb/318803 ) :
Modifier ou créer la valeur DWord MaxCacheTtl Pour cela, réglez-le sur une valeur faible, comme 3600 secondes (0xE10 en hexadécimal). Toutes les valeurs sont indiquées en secondes. La valeur par défaut est 1 jour (86 400 secondes).
Modifier ou créer la valeur DWord MaxNegativeCacheTtl en le mettant à 0.
Ainsi, tous les enregistrements seront effacés du cache au maximum une heure après leur ajout. Les résultats négatifs (domaines inexistants) ne seront pas du tout stockés dans le cache (je l'ai confirmé sur mon bureau Windows 7).
J'appelle cela une solution de contournement car je dirais que le problème réside dans le processus qui crée la quantité absurde de demandes. Si vous le pouvez, essayez d'étouffer le torrent de demandes à la source.
0 votes
Qu'est-ce que le "service dnscache" ? Je n'en ai jamais entendu parler et je ne trouve aucun service de ce nom sur aucun de mes serveurs DNS W2K8R2.
0 votes
Dans le service client DNS, le processus est appelé DNSCache.
0 votes
Il s'agit donc d'un client DNS et non d'un serveur DNS ? Qu'est-ce que ce client cherche 150 fois par seconde ?
0 votes
Le serveur exécute un serveur d'application avec des centaines de clients connectés. Il semble que le serveur d'application effectue une recherche lorsque chaque client envoie des données au serveur.
0 votes
Quelle est la version de dnsrslvr.dll ?
0 votes
Dnsrslvr.dll est la version 6.1.7601.17570 datée du 2011-03-03