Symptômes
Supposons que vous disposez d’une application ou un outil qui s’exécute dans Windows 7 ou Windows Server 2008 R2, et que l’application ou l’outil exécute une ou plusieurs des tâches suivantes :
-
Surveillance d’un autre serveur à l’aide de ICMP ou ping.exe
-
Démarrage de plusieurs processus de courte durées pour effectuer un travail et le processus est arrêté puis
-
Effectuer toute activité réseau et le processus est arrêté puis par une autre application ou un script
Dans ce cas, une fois que votre serveur s’exécute en continu pendant plusieurs heures ou plusieurs jours, vous remarquez que le service de l’Interface de banque d’informations réseau (NSI) perd de la mémoire. En outre, vous notez les problèmes suivants :
-
Si vous arrêtez le logiciel de surveillance, la fuite de mémoire s’arrête.
-
Si vous arrêtez l’application puis redémarrez l’ordinateur, aucune fuite de mémoire se produit dans le service NSI.
-
Dans certains cas, si vous le désactivez, puis activez la carte réseau, vous remarquez une croissance soudaine de l’utilisation du processeur par le service NSI. En outre, l’utilisation de la mémoire vient immédiatement gouttes de 1 ou 2 gigaoctets (Go) à 200 ou 300 mégaoctets (Mo).
Ce problème peut se produire dans un des scénarios suivants.
Scénario 1
Si une application, tel que ping.exe force arrêté, il est possible que la fonction de IcmpCloseHandle n’est pas appelé. Dans ce cas, le service NSI peut détecter qu’un client est disponible. Par conséquent, le service s’envoyer une notification sur tous les messages ICMP. Dans la mesure où le client n’existe pas, la liste de notification continue à augmenter. La liste ne pas obtenir nettoyée jusqu'à ce que le service NSI est arrêté.
Pour envoyer une commande ping, vous devez ouvrir la poignée ICMP et ensuite utiliser les autres fonctions d’assistance IP pour envoyer et recevoir des données ICMP :
Une fois que l’application envoie la commande ping, il doit appeler la fonction de IcmpCloseHandle pour fermer le handle ICMP.
Scénario 2
Un développeur crée une application pour envoyer et recevoir des messages ICMP à l’aide de IPHlelper APIs. Si seule une poignée ICMP est utilisée pour envoyer des messages ICMP pour plusieurs clients et dans ce cas le fait à un débit très élevé, l’API les qui est averti de la réception d’un message ne peut pas maintenir la vitesse. Dans ce cas, vous remarquez que la mémoire du service NSI continue à croître de manière exponentielle. En outre, vous constatez une utilisation élevée de l’UC par le service NSI (nsisvc.dll).
Scénario 3
Vous avez une application ou un service qui utilise des fonctions d’assistance des IPdirectement ou indirectement. L’application s’arrête ou est arrêté, et elle ne se ferme pas correctement lors de chaque enregistrement de notification n’est pas annulé (CancelMibChangeNotify2). Dans ce cas, le serveur NSI conserve l’enregistrement en attente pour le processus est arrêté. S’il existe plusieurs instances de l’arrêt de l’application, le service NSI aura de nombreux enregistrements en attente. Un état d’async RPC et d’autres informations est maintenu pour chaque enregistrement. Cela ajoute à l’utilisation de la mémoire. En règle générale, ces enregistrements sont effectuées pour une modification de l’interface ou d’une modification de l’adresse Unicast IP. Si aucune modification n’est à l’état, ces enregistrements sont conservés.
Les fonctions de Notification suivantes sont utilisées pendant le processus d’inscription :
La raison que de nombreuses applications ne pas appeler (CancelMibChangeNotify2) ou arrêter le processus est décrit dans la rubrique de fonction de NotifyIpInterfaceChange sur le site Web de Microsoft Developer Network.
Après l’appel de la fonction de NotifyIpInterfaceChange pour vous inscrire pour les notifications de modifications, ces notifications continueront d’être envoyées jusqu'à ce que l’application annule l’inscription pour recevoir des notifications de modification ou de l’arrêt de l’application. Si l’application s’arrête, le système annule automatiquement toute inscription pour les notifications de modification. Nous vous recommandons de configurer une application explicitement, annuler son enregistrement pour les notifications de modification avant de s’arrêter.
Pour toute inscription pour la notification, vous apportez également allouer de la mémoire non paginée (NPP) de la laBalise de NSpc.
Cause
Ce problème se produit car le processus qui inscrit pour la notification se ferme sans la première annulation de l’inscription du service de NSI. Par conséquent, la fuite d’enregistrement de NSI entraîne la fuite de mémoire dans le service NSI. Plus, le NPP une fuite de mémoire dans les contextes de NSI Proxy balise NSpc (NSI.dll).
Résolution
Informations sur le correctif logiciel
Un correctif pris en charge est disponible auprès du Support Microsoft. Toutefois, ce correctif vise à corriger uniquement le problème décrit dans cet article. Appliquez ce correctif uniquement aux systèmes qui rencontrent le problème décrit dans cet article. Ce correctif va peut-être subir des tests supplémentaires. Par conséquent, si vous n'êtes pas sérieusement concerné par ce problème, nous vous recommandons d'attendre la prochaine mise à jour logicielle qui contiendra ce correctif.
Si le correctif est disponible pour le téléchargement, il existe une section « Téléchargement de correctif logiciel disponible » au début de cet article de la Base de connaissances. Si cette section n'apparaît pas, contactez le Service clientèle et Support de Microsoft pour obtenir le correctif.
Remarque Si des problèmes supplémentaires se produisent ou si des procédures de dépannage sont nécessaires, vous devrez peut-être formuler une demande de service distincte. Les coûts habituels du support technique s'appliqueront aux questions et problèmes qui ne relèvent pas de ce correctif logiciel. Pour une liste complète des numéros de téléphone service clientèle de Microsoft ou pour créer une demande de service distincte, accédez au site Web de Microsoft suivant :
http://support.microsoft.com/contactus/?ws=support
Remarque Le formulaire « Téléchargement de correctif logiciel disponible » affiche les langues pour lesquelles le correctif est disponible. Si vous ne voyez pas votre langue, c'est parce qu'il n'y a pas de correctif disponible pour cette langue.
Conditions préalables
Pour appliquer ce correctif, vous devez disposer du Service Pack 1 pour Windows 7 ou Windows Server 2008 R2.
Nécessité de redémarrer
Vous devez redémarrer l'ordinateur après avoir appliqué ce correctif.
Informations sur le remplacement de correctif logiciel
Ce correctif ne remplace aucun correctif publié précédemment.
Informations sur les fichiers
La version anglaise de ce correctif logiciel installe des fichiers dont les attributs sont répertoriés dans les tableaux ci-dessous. Les date et heure de création de ces fichiers sont exprimées en temps universel coordonné (UTC). Les date et heure de ces fichiers s’affichent sur votre ordinateur local conformément à l’heure locale et en tenant compte de l’heure d’été. En outre, ces date et heure peuvent changer lorsque vous effectuez certaines opérations sur les fichiers.
Remarques et informations sur les fichiers Windows 7 et Windows Server 2008 R2
Important Les correctifs logiciels Windows 7 et Windows Server 2008 R2 sont inclus dans les mêmes packages. Toutefois, les correctifs dans la page de demande de correctif logiciel sont répertoriés sous les deux systèmes d’exploitation. Pour demander le package de correctif qui s’applique à un ou deux systèmes d’exploitation, sélectionnez le correctif logiciel qui est répertorié sous « Windows 7/Windows Server 2008 R2 » sur la page. Reportez-vous toujours à la section « S’applique à » dans les articles pour déterminer le système d’exploitation actif auquel s’applique chaque correctif.
-
Les fichiers qui s'appliquent à un produit spécifique, SR_Level (RTM, SPn), et à une branche de service (LDR, GDR), peuvent être identifiés en examinant les numéros de version de fichier comme indiqués dans le tableau suivant :
Version
Produit
SR_Level
Dossier
6.1.760 0. 16xxx
Windows 7 et Windows Server 2008 R2
RTM
GDR
6.1.760 1. 22xxx
Windows 7 et Windows Server 2008 R2
SP1
LDR
-
Les dossiers GDR ne contiennent que les correctifs généralement publiés pour résoudre les problèmes courants extrêmement importants. Les dossiers LDR contiennent des correctifs logiciels en plus des correctifs largement publiés.
-
Les fichiers MANIFEST (.manifest) et MUM (.mum) qui est installés pour chaque environnement est répertoriés séparément dans la section « Informations pour Windows 7 et Windows Server 2008 R2 de fichiers supplémentaires ».
-
Les fichiers MUM et MANIFEST et les fichiers de catalogue de sécurité (.cat) associés sont extrêmement importants pour conserver l'état des composants mis à jour. Les fichiers du catalogue de sécurité pour lesquels les attributs ne sont pas répertoriés sont dotés d’une signature numérique Microsoft.
Pour toutes les versions x86 prises en charge de Windows 7
Nom du fichier |
Version du fichier |
Taille du fichier |
Date |
Heure |
Plateforme |
Nsi.dll |
6.1.7600.16385 |
8,704 |
14-Jul-2009 |
01:16 |
x86 |
Nsiproxy.sys |
6.1.7600.16385 |
16,896 |
13-Jul-2009 |
23:12 |
x86 |
Nsisvc.dll |
6.1.7601.22590 |
20,480 |
05-Feb-2014 |
02:03 |
x86 |
Winnsi.dll |
6.1.7600.16385 |
16,896 |
14-Jul-2009 |
01:16 |
x86 |
Pour toutes les versions x64 prises en charge de Windows 7 et Windows Server 2008 R2
Nom du fichier |
Version du fichier |
Taille du fichier |
Date |
Heure |
Plateforme |
Nsi.dll |
6.1.7600.16385 |
13,824 |
14-Jul-2009 |
01:41 |
x64 |
Nsiproxy.sys |
6.1.7601.22590 |
24,576 |
05-Feb-2014 |
01:15 |
x64 |
Nsisvc.dll |
6.1.7601.22590 |
26,624 |
05-Feb-2014 |
02:42 |
x64 |
Winnsi.dll |
6.1.7600.16385 |
26,112 |
14-Jul-2009 |
01:41 |
x64 |
Nsi.dll |
6.1.7601.22590 |
8,704 |
05-Feb-2014 |
02:03 |
x86 |
Winnsi.dll |
6.1.7601.22590 |
16,896 |
05-Feb-2014 |
02:04 |
x86 |
Pour toutes les versions IA-64 prises en charge de Windows Server 2008 R2
Nom du fichier |
Version du fichier |
Taille du fichier |
Date |
Heure |
Plateforme |
Nsi.dll |
6.1.7600.16385 |
18,944 |
14-Jul-2009 |
01:48 |
IA-64 |
Nsiproxy.sys |
6.1.7601.22590 |
53,760 |
05-Feb-2014 |
00:50 |
IA-64 |
Nsisvc.dll |
6.1.7601.22590 |
60,928 |
05-Feb-2014 |
01:48 |
IA-64 |
Winnsi.dll |
6.1.7600.16385 |
38 912 |
14-Jul-2009 |
01:50 |
IA-64 |
Nsi.dll |
6.1.7601.22590 |
8,704 |
05-Feb-2014 |
02:03 |
x86 |
Winnsi.dll |
6.1.7601.22590 |
16,896 |
05-Feb-2014 |
02:04 |
x86 |
Informations sur les fichiers supplémentaires pour Windows 7 et Windows Server 2008 R2
Fichiers supplémentaires pour toutes les versions x86 prises en charge de Windows 7
Nom du fichier |
Package_1_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum |
Version du fichier |
Non applicable |
Taille du fichier |
1,822 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Package_2_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum |
Version du fichier |
Non applicable |
Taille du fichier |
1,805 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Package_3_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum |
Version du fichier |
Non applicable |
Taille du fichier |
1,807 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Package_for_kb2847346_rtm~31bf3856ad364e35~x86~~6.1.1.0.mum |
Version du fichier |
Non applicable |
Taille du fichier |
1,459 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Package_for_kb2847346_sp1~31bf3856ad364e35~x86~~6.1.1.0.mum |
Version du fichier |
Non applicable |
Taille du fichier |
1,918 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
X86_dfca12963d5c03edca970b29ad513eb4_31bf3856ad364e35_6.1.7601.22590_none_ff32d7aebbbb6891.manifest |
Version du fichier |
Non applicable |
Taille du fichier |
699 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
X86_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_749890603f18301d.manifest |
Version du fichier |
Non applicable |
Taille du fichier |
8,301 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:38 |
Plateforme |
Non applicable |
Fichiers supplémentaires pour toutes les versions x64 prises en charge de Windows 7 et Windows Server 2008 R2
Nom du fichier |
Amd64_37e172e525713d1718cb98daea282913_31bf3856ad364e35_6.1.7601.22590_none_9888f3a0165278fe.manifest |
Version du fichier |
Non applicable |
Taille du fichier |
1,048 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Amd64_3839818617f8250fd6f59e35da1df9bd_31bf3856ad364e35_6.1.7601.22590_none_8fbf427f98b0d1cb.manifest |
Version du fichier |
Non applicable |
Taille du fichier |
703 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Amd64_a9af583825031567fe0548a9c2c728ab_31bf3856ad364e35_6.1.7601.22590_none_59ced916edddc9da.manifest |
Version du fichier |
Non applicable |
Taille du fichier |
703 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Amd64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_d0b72be3f775a153.manifest |
Version du fichier |
Non applicable |
Taille du fichier |
8,305 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:41 |
Plateforme |
Non applicable |
Nom du fichier |
Package_1_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Version du fichier |
Non applicable |
Taille du fichier |
1,832 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Package_2_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Version du fichier |
Non applicable |
Taille du fichier |
2,237 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Package_3_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Version du fichier |
Non applicable |
Taille du fichier |
2,015 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Package_4_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Version du fichier |
Non applicable |
Taille du fichier |
2,036 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Package_for_kb2847346_rtm~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Version du fichier |
Non applicable |
Taille du fichier |
1,467 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Package_for_kb2847346_sp1~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Version du fichier |
Non applicable |
Taille du fichier |
2,830 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_db0bd6362bd6634e.manifest |
Version du fichier |
Non applicable |
Taille du fichier |
4,690 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
02:16 |
Plateforme |
Non applicable |
Fichiers supplémentaires pour toutes les versions IA-64 prises en charge de Windows Server 2008 R2
Nom du fichier |
Ia64_44d491142723affea686ec2fba3cb4ac_31bf3856ad364e35_6.1.7601.22590_none_dc26e555dbabe437.manifest |
Version du fichier |
Non applicable |
Taille du fichier |
1,046 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Ia64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_749a34563f163919.manifest |
Version du fichier |
Non applicable |
Taille du fichier |
8,303 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Package_1_for_kb2847346~31bf3856ad364e35~ia64~~6.1.1.0.mum |
Version du fichier |
Non applicable |
Taille du fichier |
2,029 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Package_for_kb2847346_sp1~31bf3856ad364e35~ia64~~6.1.1.0.mum |
Version du fichier |
Non applicable |
Taille du fichier |
1,446 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
06:35 |
Plateforme |
Non applicable |
Nom du fichier |
Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_db0bd6362bd6634e.manifest |
Version du fichier |
Non applicable |
Taille du fichier |
4,690 |
Date (UTC) |
05-Feb-2014 |
Heure (UTC) |
02:16 |
Plateforme |
Non applicable |
Solution de contournement
Pour contourner ce problème, utilisez une des solutions de contournement suivantes en fonction de votre situation.
Solution de contournement pour le scénario 1
Assurez-vous que l’application, tels que ping.exe, n’est pas arrêtée force. Au lieu de cela, laissez l’application normalement arrêt.
Vous pouvez également mettre à niveau vers Windows Server 2012. Ce problème est résolu dans Windows Server 2012. Ce correctif empêche le service NSI à partir d’une fuite de mémoire, quelle que soit la façon dont l’application est arrêtée.
Solution de contournement pour le scénario 2
Un développeur logiciel doit créer plusieurs handles ICMP pour envoyer des requêtes ICMP. Si vous devez envoyer un grand nombre de paquets ICMP, utilisez des sockets bruts et directement envoyer et recevoir des paquets ICMP sur le socket brut. Vous obtiendrez des performances plus rapides.
Solution de contournement pour un scénario 3
Dans ce scénario, si vous désactivez et activez la carte réseau, l’utilisation de la mémoire immédiatement réduit mais a un court pic d’utilisation du processeur.
Cela se produit car lorsqu’une modification se produit dans l’adresse IP ou l’interface, le service NSI est informé par le noyau. Le service NSI essaie ensuite d’indiquer tous les clients qui sont inscrits pour la notification. Lorsque le service tente de notifier un processus client qui n’existe pas, le RPC signale une erreur. Par conséquent, le service NSI supprime toutes les informations d’état qui a été enregistrées pour ce processus client. Après cela, cette mémoire est libérée.
Dans ce cas, plusieurs centaines de milliers notifications sont enregistrées. Une fois que l’événement se produit, toute la mémoire pour ces clients non valides est libérée.
Ce problème est résolu dans Windows 8.