Sintomas
Suponha que você tenha um aplicativo ou ferramenta que está sendo executado no Windows 7 ou Windows Server 2008 R2 e o aplicativo ou ferramenta executa uma ou mais das seguintes tarefas:
-
Monitoramento de outro servidor usando ICMP ou ping.exe
-
Iniciar vários processos de curta duração para executar um trabalho e o processo é interrompido
-
Fazer qualquer atividade de rede e o processo é interrompido por outro aplicativo ou script
Nessa situação, depois que o servidor é executado continuamente por várias horas ou vários dias, observe que o serviço de Interface de armazenamento de rede (NSI) vazamentos de memória. Além disso, você pode perceber os seguintes sintomas:
-
Se você interromper o software de monitoramento, interrompe o vazamento de memória.
-
Se você interromper o aplicativo e, em seguida, reinicie o computador, não há vazamento de memória ocorre no serviço NSI.
-
Em alguns casos, se você desabilitar e habilitar o adaptador de rede, você notar um aumento repentino de uso da CPU pelo serviço NSI. Além disso, o uso da memória é exibida imediatamente descartes de 1 ou 2 gigabytes (GB) para 200 ou 300 megabytes (MB).
Esse problema pode ocorrer em qualquer uma das seguintes situações.
Cenário 1
Se um aplicativo como o ping.exe forçosamente for interrompido, é possível que a função IcmpCloseHandle não é chamado. Nesse caso, o serviço NSI pode detectar que um cliente está disponível. Portanto, o serviço sempre enviar avisos sobre quaisquer mensagens ICMP. Porque o cliente não existe, a lista de notificação continua a aumentar. A lista não é eliminada, até que o serviço NSI for interrompido.
Para enviar um ping, você deve abrir o identificador ICMP e use essas outras funções auxiliares de IP para enviar e receber dados ICMP:
Depois que o aplicativo envia o ping, ele deve chamar a função IcmpCloseHandle para fechar o identificador ICMP.
Cenário 2
Um desenvolvedor de software cria um aplicativo para enviar e receber mensagens ICMP usando APIs do IPHlelper. Se apenas um identificador ICMP é usado para enviar mensagens ICMP para vários clientes e se ele faz isso faz isso com uma taxa muito alta, a API de IPHelper que é notificado quando uma mensagem é recebida não pode manter a velocidade. Nesse caso, você percebe que a memória de serviço NSI continua a crescer exponencialmente. Além disso, você deve observar alto uso da CPU pelo serviço NSI (nsisvc.dll).
Cenário 3
Você tem um aplicativo ou serviço que direta ou indiretamente usa funções auxiliares de IP. O aplicativo para ou é interrompida, e ele não sair normalmente quando cada registro de notificação não é cancelado (CancelMibChangeNotify2). Nesse caso, o servidor NSI mantém registro pendente para que o processo é interrompido. Se houver muitas ocorrências de paralisação dos aplicativos, o serviço NSI terá muitos registros remanescentes. Um estado de RPC assíncrona e outras informações é mantida para cada registro. Isso adiciona o uso de memória. Normalmente, esses registros são feitos para uma alteração de interface ou um endereço Unicast IP. Se não houver nenhuma alteração no estado, esses registros ainda são mantidos.
As seguintes funções de notificação são usadas durante o processo de registro:
A razão que muitos aplicativos não chamar (CancelMibChangeNotify2) ou interromper o processo é discutida no tópico da função NotifyIpInterfaceChange no site da Microsoft Developer Network.
Depois que a função NotifyIpInterfaceChange é chamado para registrar notificações de alteração, essas notificações continuarão sendo enviadas até que o aplicativo cancela o registro para receber notificações de alteração ou para o aplicativo. Se o aplicativo for interrompido, o sistema automaticamente cancela o registro qualquer registro para notificações de alteração. Recomendamos que você configure um aplicativo para cancelar o registro explicitamente para notificações de alteração antes de parar.
Para cada registro de notificação, verifique também alocar memória não-paginável (NPP) para o oMarca de NSpc.
Causa
Esse problema ocorre porque o processo registra para a notificação sai sem primeiro remover o registro do serviço NSI. Portanto, o vazamento de registro NSI causa o vazamento de memória no serviço de NSI. Além disso, o NPP vazamentos de memória no NSI Proxy contextos marca NSpc (NSI.dll).
Resolução
Informações sobre o hotfix
Um hotfix suportado está disponível no Microsoft Support. No entanto, esse hotfix destina-se a corrigir somente o problema descrito neste artigo. Aplique este hotfix somente nos sistemas que estiverem enfrentando o problema descrito neste artigo. Esta correção poderá ser submetida a testes adicionais. Portanto, se esse problema não o prejudicar, recomendamos que você aguarde a próxima atualização de software que contenha esse hotfix.
Se o hotfix estiver disponível para download, há uma seção "Download de Hotfix disponível" na parte superior deste artigo da Base de Conhecimento. Se essa seção não for exibida, entre em contato com o suporte e atendimento ao cliente Microsoft para obter o hotfix.
Observação caso outros problemas estejam ocorrendo ou caso qualquer solução de problemas seja necessária, talvez você precise criar uma solicitação de serviço separada. Os custos normais de suporte serão aplicados a questões de suporte adicionais e problemas que não sejam específicos deste hotfix. Para obter uma lista completa dos números de telefone do Atendimento Microsoft e Suporte ou para criar uma solicitação de serviço separada, visite o seguinte site da Microsoft:
http://support.microsoft.com/contactus/?ws=support
Observação o formulário "Baixar Hotfix disponível" exibe os idiomas para os quais o hotfix está disponível. Caso você não veja seu idioma, é porque um hotfix não está disponível para esse idioma.
Pré-requisitos
Para aplicar esse hotfix, você deve ter o Service Pack 1 para o Windows 7 ou Windows Server 2008 R2 instalado.
Necessidade de reinicialização
Você deve reiniciar o computador após aplicar esse hotfix.
Informações sobre a substituição de hotfixes
Esse hotfix não substitui nenhum hotfix lançado anteriormente.
Informações do arquivo
A versão em inglês (Estados Unidos) deste hotfix instala arquivos que têm os atributos listados nas tabelas a seguir. As datas e as horas desses arquivos estão listadas em formato UTC (Tempo Universal Coordenado). As datas e as horas desses arquivos no seu computador local são exibidas na hora local, com o ajuste do horário de verão atual. Além disso, as datas e as horas poderão ser alteradas quando você realizar algumas operações nos arquivos.
Notas e informações de arquivo do Windows 7 e do Windows Server 2008 R2
Importante Os hotfixes do Windows 7 e do Windows Server 2008 R2 estão incluídos nos mesmos pacotes. No entanto, os hotfixes na página de Solicitação de Hotfix estão listados nos dois sistemas operacionais. Para solicitar o pacote de hotfix que se aplica a um dos sistemas operacionais ou a ambos, selecione o hotfix listado em "Windows 7/Windows Server 2008 R2" na página. Sempre consulte a seção "Aplica-se a" dos artigos para determinar o sistema operacional real ao qual cada hotfix é aplicável.
-
Os arquivos que se aplicam a um produto específico, SR_Level (RTM, SPn) e ramificação do serviço (LDR, GDR) podem ser identificados ao examinar os números de versão do arquivo conforme mostrado na tabela a seguir:
Versão
Produto
SR_Level
Ramificação do 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
-
As ramificações do serviço GDR contêm somente as correções amplamente disponibilizadas para resolver problemas conhecidos e extremamente importantes. As ramificações do serviço LDR contêm hotfixes além de correções amplamente disponibilizadas.
-
Os arquivos MANIFEST (. manifest) e os arquivos MUM (. mum) instalados para cada ambiente são listados separadamente na seção "Informações adicionais sobre arquivos para Windows 7 e Windows Server 2008 R2".
-
MUM e arquivos de manifesto e os arquivos de catálogo (. cat) de segurança associadas são extremamente importantes para manter o estado dos componentes atualizados. Os arquivos do catálogo de segurança, para os quais os atributos não estão listados, possuem uma assinatura digital da Microsoft.
Para todas as versões compatíveis baseadas em x86 do Windows 7
Nome do arquivo |
Versão do arquivo |
Tamanho do arquivo |
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 compatíveis do Windows 7 e do Windows Server 2008 R2 baseadas em x64.
Nome do arquivo |
Versão do arquivo |
Tamanho do arquivo |
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 com base em IA-64 do Windows Server 2008 R2 com suporte
Nome do arquivo |
Versão do arquivo |
Tamanho do arquivo |
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 do arquivo adicional para Windows 7 e Windows Server 2008 R2
Arquivos adicionais para todas as versões baseadas em x86 compatíveis do Windows 7
Nome do arquivo |
Package_1_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
1,822 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Package_2_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
1,805 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Package_3_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
1,807 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Package_for_kb2847346_rtm~31bf3856ad364e35~x86~~6.1.1.0.mum |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
1,459 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Package_for_kb2847346_sp1~31bf3856ad364e35~x86~~6.1.1.0.mum |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
1,918 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
X86_dfca12963d5c03edca970b29ad513eb4_31bf3856ad364e35_6.1.7601.22590_none_ff32d7aebbbb6891.manifest |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
699 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
X86_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_749890603f18301d.manifest |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
8,301 |
Date (UTC) |
05-Feb-2014 |
Hora (UTC) |
06:38 |
Plataforma |
Não aplicável |
Arquivos adicionais para todas as versões com base em x64 compatíveis do Windows 7 e do Windows Server 2008 R2
Nome do arquivo |
Amd64_37e172e525713d1718cb98daea282913_31bf3856ad364e35_6.1.7601.22590_none_9888f3a0165278fe.manifest |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
1,048 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Amd64_3839818617f8250fd6f59e35da1df9bd_31bf3856ad364e35_6.1.7601.22590_none_8fbf427f98b0d1cb.manifest |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
703 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Amd64_a9af583825031567fe0548a9c2c728ab_31bf3856ad364e35_6.1.7601.22590_none_59ced916edddc9da.manifest |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
703 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Amd64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_d0b72be3f775a153.manifest |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
8,305 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:41 |
Plataforma |
Não aplicável |
Nome do arquivo |
Package_1_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
1,832 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Package_2_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
2,237 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Package_3_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
2,015 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Package_4_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
2,036 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Package_for_kb2847346_rtm~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
1,467 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Package_for_kb2847346_sp1~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
2,830 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_db0bd6362bd6634e.manifest |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
4,690 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
02:16 |
Plataforma |
Não aplicável |
Arquivos adicionais para todas as versões baseadas em IA-64 compatíveis do Windows Server 2008 R2
Nome do arquivo |
Ia64_44d491142723affea686ec2fba3cb4ac_31bf3856ad364e35_6.1.7601.22590_none_dc26e555dbabe437.manifest |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
1,046 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Ia64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_749a34563f163919.manifest |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
8,303 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Package_1_for_kb2847346~31bf3856ad364e35~ia64~~6.1.1.0.mum |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
2,029 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Package_for_kb2847346_sp1~31bf3856ad364e35~ia64~~6.1.1.0.mum |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
1,446 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
06:35 |
Plataforma |
Não aplicável |
Nome do arquivo |
Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_db0bd6362bd6634e.manifest |
Versão do arquivo |
Não aplicável |
Tamanho do arquivo |
4,690 |
Date (UTC) |
05-Feb-2014 |
Time (UTC) |
02:16 |
Plataforma |
Não aplicável |
Solução alternativa
Para contornar esse problema, use um dos seguintes soluções conforme apropriado para sua situação.
Solução alternativa para o cenário 1
Certifique-se de que o aplicativo, como ping.exe, forçosamente não foi interrompido. Em vez disso, permita que o aplicativo normalmente desligamento.
Como alternativa, atualizar para o Windows Server 2012. Esse problema foi corrigido no Windows Server 2012. Essa correção impede que o serviço NSI vazamento de memória independentemente de como o aplicativo é interrompido.
Solução alternativa para o cenário 2
Um desenvolvedor de software deve criar várias alças ICMP para enviar solicitações ICMP. Se você deve enviar um grande número de pacotes ICMP, você deve usar soquetes brutos e diretamente enviar e receber pacotes ICMP no soquete BRUTO. Isso lhe dará um desempenho mais rápido.
Solução alternativa para o cenário 3
Nesse cenário, se você desativar e ativar o adaptador de rede, o uso de memória imediatamente diminui, mas tem um pequeno pico de uso da CPU.
Isso ocorre porque quando ocorre uma alteração no endereço IP ou a interface, o serviço NSI é notificado pelo kernel. O serviço NSI tentará informar todos os clientes que estão registrados para a notificação. Quando o serviço tenta notificar um processo do cliente que não existe, o RPC relata um erro. Portanto, o serviço NSI exclui todas as informações de estado que foi salvo para que o processo cliente. Depois disso, se a memória é liberada.
Nesse caso, várias notificações de centenas de milhares são registradas. Depois que o evento ocorre, toda a memória para esses clientes inválidos é liberada.
Esse problema foi corrigido no Windows 8.