Sintomas
Suponha que tem uma aplicação ou ferramenta que está a ser executado no Windows 7 ou Windows Server 2008 R2 e que a aplicação ou a ferramenta efectua uma ou mais das seguintes tarefas:
-
Monitorização de outro servidor utilizando o ICMP ou ping.exe
-
Iniciar vários processos curto para desempenhar uma tarefa e o processo é parado, em seguida
-
Efectuar qualquer actividade de rede e o processo é parado, em seguida, por outra aplicação ou script
Nesta situação, depois do servidor é executado continuamente durante várias horas ou vários dias, notar que o serviço de Interface de arquivo de rede (NSI) fugas de memória. Além disso, detectar os seguintes sintomas:
-
Se parar o software de monitorização, pára a fuga de memória.
-
Não se parar a aplicação e, em seguida, reinicie o computador, ocorre nenhuma fuga de memória no serviço de NSI.
-
Em alguns casos, se desactivar e, em seguida, Active a placa de rede, notará um pico súbito de utilização da CPU pelo serviço NSI. Além disso, a utilização da memória imediatamente provém gotas 1 ou 2 gigabytes (GB) de 200 ou 300 megabytes (MB).
Este problema pode ocorrer em qualquer um dos seguintes cenários.
Cenário 1
Se uma aplicação como ping.exe forçosamente for parado, é possível que a função IcmpCloseHandle não é chamada. Neste caso, o serviço NSI poderá detectar que existe um cliente disponível. Por conseguinte, o serviço continuamente enviar notificações sobre quaisquer mensagens ICMP. Uma vez que o cliente não existe, a lista de notificação continua a aumentar. Não obter limpar a lista até que o serviço NSI está parado.
Para enviar um ping, tem de abrir o identificador ICMP e, em seguida, utilizar estas outras funções de programa auxiliar IP para enviar e receber dados ICMP:
Depois da aplicação envia o ping, tem de chamar a função IcmpCloseHandle para fechar o identificador ICMP.
Cenário 2
Um programador cria uma aplicação para enviar e receber mensagens ICMP utilizando APIs de IPHlelper. Se apenas um identificador ICMP é utilizado para enviar mensagens de ICMP para vários clientes e se tal acontecer faz a uma velocidade muito elevada, a API de IPHelper que é notificado quando é recebida uma mensagem não é possível manter a velocidade. Neste caso, repare que a memória do serviço NSI continua a crescer exponencialmente. Além disso, pode detectar utilização elevada da CPU pelo serviço NSI (nsisvc.dll).
Cenário 3
Tem uma aplicação ou serviço que directa ou indirectamente utiliza funções de programa auxiliar IP. A aplicação deixa ou parado, e se não sair correctamente quando cada registo de notificação não é cancelado (CancelMibChangeNotify2). Neste caso, o servidor NSI mantém o registo pendentes para o processo que está parado. Se existirem várias instâncias de paragem de aplicação, o serviço NSI irá ter muitos registos lentos. Um Estado do RPC assíncrona e outras informações são mantidas para cada registo. Esta acção adiciona a utilização da memória. Normalmente, estes registos são feitos por uma alteração de interface ou uma alteração de endereço IP de Unicast. Se não existir nenhuma alteração no Estado, estes registos ainda são mantidos.
As seguintes funções de notificação são utilizadas durante o processo de registo:
O motivo que muitas aplicações não chamar (CancelMibChangeNotify2) ou parar o processo é discutido no tópico função NotifyIpInterfaceChange no Web site da Microsoft Developer Network.
Depois da função NotifyIpInterfaceChange é chamado para registar notificações de alterações, estas notificações continuam a ser enviadas até que a aplicação anula o registo para receber notificações de alteração ou a aplicação é interrompida. Se a aplicação parar, o sistema automaticamente anula o registo de qualquer registo para notificações de alterações. Recomendamos que configure uma aplicação explicitamente anular o registo para notificações de alterações antes de parar.
Para cada registo de notificação, que efectuar também atribuir memória não paginado (NPP) para o oCódigo NSpc.
Causa
Este problema ocorre porque o processo que regista para notificação sai sem primeiro a anular o registo do serviço NSI. Por conseguinte, a fuga de registo NSI faz com que a fuga de memória no serviço de NSI. Além disso, o NPP fugas de memória no NSpc de Tag de contextos de Proxy NSI (NSI.dll).
Resolução
Informações sobre correção
Uma correção suportada está disponível a partir do Suporte da Microsoft. No entanto, esta correção destina-se apenas a corrigir o problema descrito neste artigo. Aplique esta correção apenas em sistemas que tenham o problema descrito neste artigo. Esta correcção poderá ser submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afetado por este problema, recomendamos que aguarde pela próxima atualização de software que contenha esta correção.
Se a correcção estiver disponível para transferência, existirá uma secção de "Transferência de correcção disponível" na parte superior deste artigo da Base de dados de conhecimento. Se esta secção não for apresentada, contacte o Suporte ao Cliente da Microsoft para obter a correção.
Nota Caso ocorram problemas adicionais ou se for necessária a resolução de problemas, poderá ter de criar um pedido de assistência separado. Os custos de normais do suporte serão aplicados a questões de suporte adicional e problemas incluídos nesta correção específica. Para uma lista completa dos números de telefone de suporte e serviço de cliente da Microsoft ou para criar um pedido de assistência separado, vá para o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota O formulário "Transferência de correcção disponível" apresenta os idiomas nos quais a correcção está disponível. Se não visualizar o seu idioma, é porque uma correcção não está disponível para esse idioma.
Pré-requisitos
Para aplicar esta correcção, tem de ter o Service Pack 1 para Windows 7 ou Windows Server 2008 R2.
Requisito de reinício
Tem de reiniciar o computador depois de aplicar esta correcção.
Informações sobre substituição de correções
Esta correcção não substitui qualquer correcção disponibilizada anteriormente.
Informações de ficheiro
A versão inglesa (Estados Unidos) desta correcção instala ficheiros que têm os atributos listados nas tabelas seguintes. As datas e horas destes ficheiros são listadas na Hora Universal Coordenada (UTC). As datas e horas destes ficheiros no computador local são apresentadas na hora local em conjunto com a compensação de hora de Verão (DST) atual. Além disso, as datas e horas podem ser alteradas quando são executadas determinadas operações nos ficheiros.
Informações de ficheiro do Windows 7 e Windows Server 2008 R2 e notas
Importante Correcções do Windows 7 e Windows Server 2008 R2 correcções são incluídas nos pacotes mesmos. No entanto, as correcções na página de pedido de correcção estão listadas em ambos os sistemas operativos. Para pedir o pacote de correcções que se aplica a um ou ambos os sistemas operativos, seleccione a correcção listada em "Windows 7/Windows Server 2008 R2" na página. Consulte a secção "Aplica-se a" nos artigos para determinar o sistema operativo real que cada correcção aplica-se para sempre.
-
Os ficheiros aplicáveis a um produto específico, SR_Level (RTM, SPn) e ramo de serviço (LDR, GDR) podem ser identificados examinando os números de versão do ficheiro, conforme mostrado na seguinte tabela.
Versão
Produto
SR_Level
Ramo de serviço
6.1.760 0. 16xxx
Windows 7 e Windows Server 2008 R2
RTM
GDR
6.1.760 1. 22xxx
Windows 7 e Windows Server 2008 R2
SP1
LDR
-
Ramos de serviço GDR contêm apenas as correcções amplamente distribuídas para resolver problemas extremamente importante generalizados. Os ramos de serviço LDR contêm outras correcções além das correcções amplamente distribuídas.
-
Os ficheiros MANIFEST (. manifest) e MUM (. mum) instalados em cada ambiente é listados em separado na secção "Informações para o Windows 7 e Windows Server 2008 R2 ficheiros adicionais".
-
Ficheiros MUM, MANIFESTO e os ficheiros de catálogo de segurança (. cat) associados, são extremamente importantes para manter o estado dos componentes atualizados. Os ficheiros de catálogo de segurança, para os quais os atributos não são listados são assinados com uma assinatura digital da Microsoft.
Para todas as versões baseadas em x86 suportadas do Windows 7
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
Plataforma |
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 |
Para todas as versões baseadas em x64 do Windows 7 e Windows Server 2008 R2 suportadas
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
Plataforma |
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 |
Para todas as versões suportadas baseadas em IA-64 do Windows Server 2008 R2
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
Plataforma |
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 |
Informações sobre ficheiros adicionais para Windows 7 e Windows Server 2008 R2
Ficheiros adicionais para todas as versões baseadas em x86 suportadas do Windows 7
Nome do ficheiro |
Package_1_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
1,822 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Package_2_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
1,805 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Package_3_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
1,807 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Package_for_kb2847346_rtm~31bf3856ad364e35~x86~~6.1.1.0.mum |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
1,459 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Package_for_kb2847346_sp1~31bf3856ad364e35~x86~~6.1.1.0.mum |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
1,918 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
X86_dfca12963d5c03edca970b29ad513eb4_31bf3856ad364e35_6.1.7601.22590_none_ff32d7aebbbb6891.manifest |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
699 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
X86_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_749890603f18301d.manifest |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
8,301 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:38 |
Plataforma |
Não aplicável |
Ficheiros adicionais para todas as versões baseadas em x64 do Windows 7 e Windows Server 2008 R2 suportadas
Nome do ficheiro |
Amd64_37e172e525713d1718cb98daea282913_31bf3856ad364e35_6.1.7601.22590_none_9888f3a0165278fe.manifest |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
1,048 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Amd64_3839818617f8250fd6f59e35da1df9bd_31bf3856ad364e35_6.1.7601.22590_none_8fbf427f98b0d1cb.manifest |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
703 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Amd64_a9af583825031567fe0548a9c2c728ab_31bf3856ad364e35_6.1.7601.22590_none_59ced916edddc9da.manifest |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
703 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Amd64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_d0b72be3f775a153.manifest |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
8,305 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:41 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Package_1_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
1,832 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Package_2_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
2,237 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Package_3_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
2,015 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Package_4_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
2,036 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Package_for_kb2847346_rtm~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
1,467 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Package_for_kb2847346_sp1~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
2,830 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_db0bd6362bd6634e.manifest |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
4,690 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
02:16 |
Plataforma |
Não aplicável |
Ficheiros adicionais para todas as versões baseadas em IA-64 do Windows Server 2008 R2 suportadas
Nome do ficheiro |
Ia64_44d491142723affea686ec2fba3cb4ac_31bf3856ad364e35_6.1.7601.22590_none_dc26e555dbabe437.manifest |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
1,046 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Ia64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_749a34563f163919.manifest |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
8,303 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Package_1_for_kb2847346~31bf3856ad364e35~ia64~~6.1.1.0.mum |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
2,029 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Package_for_kb2847346_sp1~31bf3856ad364e35~ia64~~6.1.1.0.mum |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
1,446 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do ficheiro |
Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_db0bd6362bd6634e.manifest |
Versão do ficheiro |
Não aplicável |
Tamanho do ficheiro |
4,690 |
Data (UTC) |
05-Feb-2014 |
Hora (UTC) |
02:16 |
Plataforma |
Não aplicável |
Solução
Para contornar este problema, utilize uma das seguintes soluções conforme adequado à sua situação.
Solução para o cenário 1
Certifique-se de que a aplicação, tal como ping.exe, não está forçosamente parada. Em vez disso, permitir que a aplicação correctamente encerramento.
Em alternativa, actualizar para o Windows Server 2012. Este problema foi corrigido no Windows Server 2012. Esta correcção impede que o serviço NSI uma fuga de memória independentemente da forma como a aplicação está parada.
Solução para o cenário 2
Um programador de software deverá criar vários identificadores ICMP para enviar pedidos ICMP. Se tiver de enviar um grande número de pacotes ICMP, deve utilizar sockets não processados e directamente enviar e receber pacotes ICMP no socket em bruto. Isso dará o melhor desempenho.
Solução para o cenário 3
Neste cenário, se desactivar e activar a placa de rede, a utilização da memória imediatamente diminui mas tem um pico curto de utilização da CPU.
Isto ocorre porque quando ocorrer uma alteração no endereço IP ou a interface, o serviço NSI é notificado pelo kernel. O serviço NSI, em seguida, tenta comunicada todos os clientes que estão registados para a notificação. Quando o serviço tenta notificar um processo de cliente que não existe, o RPC comunica um erro. Por conseguinte, o serviço NSI elimina todas as informações de estado que foi guardadas para esse processo de cliente. Depois disto, que a memória é libertada.
Neste caso, são registadas vários e Quinhentos Mil notificações. Depois do evento ocorre, toda a memória para estes clientes inválidos é libertada.
Este problema é corrigido no Windows 8.