증상
응용 프로그램이 나 Windows 7 또는 Windows Server 2008 r 2에서 실행 되는 도구 그리고 응용 프로그램이 나 도구는 다음 작업 중 하나 이상을 수행 함을 가정 합니다.
-
ICMP 또는 ping.exe를 사용 하 여 다른 서버 모니터링
-
시작 작업을 수행 하는 여러 짧은 프로세스와 프로세스 중지
-
다른 응용 프로그램이 나 스크립트 중지 되어 모든 네트워크 활동 및 프로세스를 수행 하
이 상황에서 서버에서 몇 시간 동안 계속 실행 또는 표시 하면 며칠 후 네트워크 저장소 인터페이스 (NSI) 서비스에서 메모리 누수가 발생 합니다. 또한 다음과 같은 현상이 나타납니다.
-
모니터링 소프트웨어를 중지 하면 메모리 누수가 중지 합니다.
-
응용 프로그램을 중지 하 고 컴퓨터를 다시 시작 하는 경우 NSI 서비스에서 메모리 누수가 발생 하지 발생 합니다.
-
경우에 따라 해제 하 고 다음 네트워크 어댑터를 사용 하는 경우 알게 CPU 사용량의 급격 한 스파이크 NSI 서비스. 또한 메모리 사용 즉시 떨어뜨림에서에서 온 1 또는 2 기가바이트 (GB) 200 또는 300 메가바이트 (MB)에.
이 문제는 다음 시나리오 중 하나에서 발생할 수 있습니다.
시나리오 1
Ping.exe 같은 응용 프로그램을 강제로 중지 되었을 IcmpCloseHandle 함수 는 호출 되지 않습니다. 이 경우 사용할 수 있는 클라이언트는 NSI 서비스를 검색할 수 있습니다. 따라서 서비스는 지속적으로 ICMP 메시지에 대 한 통지를 보냅니다. 클라이언트가 없기 때문에 알림 목록을 계속 증가 합니다. NSI 서비스가 중단 될 때까지 목록을 정리할 얻을지 않습니다.
Ping을 보낼 ICMP 핸들을 연 다음이 IP 도우미 함수를 사용 하 여 ICMP 데이터 송수신 해야.
응용 프로그램에서 ping을 보낸 후 ICMP 핸들을 IcmpCloseHandle 함수 를 호출 해야 합니다.
시나리오 2
소프트웨어 개발자는 IPHlelper Api를 사용 하 여 ICMP 메시지를 주고받을 수 있는 응용 프로그램을 만듭니다. ICMP 핸들 여러 클라이언트에 대 한 ICMP 메시지를 보내는 데 사용 되 고이 작업을 수행 하는 경우 매우 빠른 속도로 않습니다, 메시지를 받을 때 알림을 IPHelper API 속도 유지할 수 없습니다. 이 경우 NSI 서비스 메모리 계속 기하급수적으로 증가 하는지 확인할 수 있습니다. 또한 CPU 사용량이 NSI 서비스 (nsisvc.dll)에서 확인할 수 있습니다.
시나리오 3
응용 프로그램이 나 서비스에 직접 또는 간접적으로 IP 도우미 함수를 사용 하는 경우 응용 프로그램이 정지 하거나 중지 하면 그 종료 되지 않으면 정상적으로 각 알림 등록을 취소 (CancelMibChangeNotify2) 때 고. 이 경우 NSI 서버는 중지 된 프로세스에 대 한 등록 보류를 유지 합니다. 응용 프로그램 중지의 여러 인스턴스를 NSI 서비스 많은 느린 등록 해야 합니다. 모든 등록 된 RPC 비동기 상태 및 기타 정보 유지 됩니다. 메모리 사용량에 추가합니다. 일반적으로이 등록 된 인터페이스 변경 이나 유니캐스트 IP 주소에 대 한 수행 됩니다. 상태가 변경 되지 않으면이 등록은 계속 유지 됩니다.
다음과 같은 알림 기능을 등록 하는 동안 사용 됩니다.
많은 응용 프로그램 (CancelMibChangeNotify2)를 호출 하거나 프로세스를 중지 하지 않는 이유는 NotifyIpInterfaceChange 함수 항목 Microsoft Developer Network 웹 사이트에서 설명 합니다.
변경 알림을 등록 하려면 NotifyIpInterfaceChange 함수 를 호출이 알림을 보낼 응용 프로그램 응용 프로그램 중지 또는 변경 알림을 수신 하도록 등록 취소 될 때까지 계속 합니다. 응용 프로그램이 중지 되 면 시스템 자동 변경 알림 등록을 취소 합니다. 명시적으로 중지 하기 전에 변경 알림을 등록 하는 응용 프로그램을 구성 하는 것이 좋습니다.
또한 일부 (NPP) 비페이징 풀 메모리를 할당 해야 알림에 대 한 모든 등록,의NSpc 태그입니다.
원인
이 문제는 NSI 서비스에서 먼저 등록을 취소 하지 않고 알림을 등록 하는 프로세스를 종료 하기 때문에 발생 합니다. 따라서 NSI에 등록 누수 원인이 메모리 누수가 NSI 서비스. 또한는 NPP NSI 프록시 컨텍스트 태그 NSpc (NSI.dll) 메모리 누수.
해결 방법
핫픽스 정보
지원 되는 핫픽스는 Microsoft 기술 지원부에서 사용할 수 있습니다. 그러나 이 핫픽스는 오직 이 문서에서 설명하는 문제를 해결하는 작업에만 사용됩니다. 이 문서에서 설명한 문제가 발생하는 시스템에만 이 핫픽스를 적용하십시오. 이 핫픽스는 추가 테스트가 필요할 수도 있습니다. 따라서, 이 문제로 심각하게 영향을 받지 않는 경우 이 핫픽스가 포함된 다음 소프트웨어 업데이트가 나올 때까지 기다리는 것이 좋습니다.
핫픽스를 다운로드할 수 있는 경우, 이 기술 자료 문서의 상단에 "핫픽스 다운로드 가능" 섹션이 있습니다. 이 섹션이 나타나지 않으면, Microsoft 고객 지원에 문의하여 핫픽스를 얻으십시오.
참고 추가 문제가 발생하거나 문제 해결이 필요한 경우, 별도로 서비스를 요청해야 할 수도 있습니다. 추가 지원 질문과 이 특정 핫픽스가 필요하지 않은 문제에는 일반 지원 비용이 적용됩니다. Microsoft 고객 서비스 및 지원 전화 번호의 전체 목록을 보거나 별도 서비스 요청을 만들려면, 다음 Microsoft 웹 사이트로 이동하십시오.
http://support.microsoft.com/contactus/?ws=support
참고 "핫픽스 다운로드 사용 가능" 형식은 핫픽스 사용이 가능한 언어를 표시합니다. 사용자 언어가 표시되지 않는 것은 핫픽스를 해당 언어로 사용할 수 없기 때문입니다.
필수 조건
이 핫픽스를 적용 하려면 Windows 7 또는 Windows Server 2008 R2 설치를 위한 서비스 팩 1 있어야 합니다.
다시 시작 요구 사항
이 핫픽스를 적용한 후 컴퓨터를 다시 시작해야 합니다.
핫픽스 대체 정보
이 핫픽스는 이전에 릴리스된 핫픽스를 대체하지 않습니다.
파일 정보
이 핫픽스의 영어(미국) 버전은 다음 표에 나열된 특성을 갖는 파일을 설치합니다. 이 파일의 날짜와 시간은 UTC(협정 세계시)로 표시됩니다. 로컬 컴퓨터의 경우 파일의 날짜와 시간이 현지 시간으로 표시되며 현재의 DST(일광 절약 시간) 시차가 유지됩니다. 또한이러한날짜와시간은파일에대해특정작업을수행할경우변경될수있습니다.
Windows 7 및 Windows Server 2008 R2의 파일 정보 및 메모
중요 Windows 7 핫픽스 및 Windows Server 2008 R2 핫픽스는 같은 패키지에 포함되어 있습니다. 그러나 핫픽스 요청 페이지에 있는 핫픽스는 두 운영 체제 아래에 나열됩니다. 하나 또는 두 운영 체제에 적용되는 핫픽스 패키지를 요청하려면 "Windows 7/Windows Server 2008 R2" 페이지에 나열된 핫픽스를 선택합니다. 각 핫픽스가 적용하는 실제 운영 체제를 확인하려면 문서에서 "적용 대상" 절을 항상 참조하십시오.
-
특정 제품, SR_Level(RTM, SPn) 및 서비스 분기(LDR, GDR)에 적용되는 파일은 다음 표에 나오는 파일 버전 번호를 검토하여 식별할 수 있습니다.
버전
제품
SR_Level
서비스 분기
6.1.760 0. xxx16
Windows 7 및 Windows Server 2008 R2
RTM
GDR
6.1.7601. xxx22
Windows 7 및 Windows Server 2008 R2
SP1
LDR
-
GDR 서비스 분기는 광범위하게 퍼져 있는 매우 중요한 문제의 해결을 위해 널리 배포된 수정만 포함합니다. LDR 서비스분기에는널리배포되는픽스외에핫픽스도포함되어있습니다.
-
매니페스트 파일 (.manifest) 및 MUM 파일 (.mum) 설치 되어 있는 각 환경에 대 한 "추가 파일을 Windows 7 및 Windows Server 2008 r 2에 대 한 정보" 절에서 별도로 나열 됩니다.
-
MUM 및 매니페스트 파일과 관련 된 보안 카탈로그 (.cat) 파일은 업데이트 된 구성 요소의 상태를 유지 하기 위해 매우 중요 합니다. 특성이 나와 있지 않은 보안 카탈로그 파일에는 Microsoft 디지털 서명이 있습니다.
지원되는 모든 x86 기반 버전의 Windows 7
파일 이름 |
파일 버전 |
파일 크기 |
날짜 |
시간 |
Platform |
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 |
지원되는 모든 x64 기반 버전 Windows 7 및 Windows Server 2008 R2
파일 이름 |
파일 버전 |
파일 크기 |
날짜 |
시간 |
Platform |
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 |
지원되는 모든 IA-64 기반 버전의 Windows Server 2008 R2
파일 이름 |
파일 버전 |
파일 크기 |
날짜 |
시간 |
Platform |
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 |
Windows 7 및 Windows Server 2008 R2에 대한 추가 파일 정보
지원되는 모든 x86 기반 Windows 7 버전에 대한 추가 파일
파일 이름 |
Package_1_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum |
파일 버전 |
해당 사항 없음 |
파일 크기 |
1,822 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Package_2_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum |
파일 버전 |
해당 사항 없음 |
파일 크기 |
1,805 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Package_3_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum |
파일 버전 |
해당 사항 없음 |
파일 크기 |
1,807 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Package_for_kb2847346_rtm~31bf3856ad364e35~x86~~6.1.1.0.mum |
파일 버전 |
해당 사항 없음 |
파일 크기 |
1,459 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Package_for_kb2847346_sp1~31bf3856ad364e35~x86~~6.1.1.0.mum |
파일 버전 |
해당 사항 없음 |
파일 크기 |
1,918 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
X86_dfca12963d5c03edca970b29ad513eb4_31bf3856ad364e35_6.1.7601.22590_none_ff32d7aebbbb6891.manifest |
파일 버전 |
해당 사항 없음 |
파일 크기 |
699 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
X86_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_749890603f18301d.manifest |
파일 버전 |
해당 사항 없음 |
파일 크기 |
8,301 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:38 |
플랫폼 |
해당 사항 없음 |
지원되는 모든 x64 기반 버전의 Windows 7 및 Windows Server 2008 R2에 대한 추가 파일
파일 이름 |
Amd64_37e172e525713d1718cb98daea282913_31bf3856ad364e35_6.1.7601.22590_none_9888f3a0165278fe.manifest |
파일 버전 |
해당 사항 없음 |
파일 크기 |
1,048 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Amd64_3839818617f8250fd6f59e35da1df9bd_31bf3856ad364e35_6.1.7601.22590_none_8fbf427f98b0d1cb.manifest |
파일 버전 |
해당 사항 없음 |
파일 크기 |
703 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Amd64_a9af583825031567fe0548a9c2c728ab_31bf3856ad364e35_6.1.7601.22590_none_59ced916edddc9da.manifest |
파일 버전 |
해당 사항 없음 |
파일 크기 |
703 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Amd64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_d0b72be3f775a153.manifest |
파일 버전 |
해당 사항 없음 |
파일 크기 |
8,305 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:41 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Package_1_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
파일 버전 |
해당 사항 없음 |
파일 크기 |
1,832 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Package_2_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
파일 버전 |
해당 사항 없음 |
파일 크기 |
2,237 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Package_3_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
파일 버전 |
해당 사항 없음 |
파일 크기 |
2,015 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Package_4_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
파일 버전 |
해당 사항 없음 |
파일 크기 |
2,036 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Package_for_kb2847346_rtm~31bf3856ad364e35~amd64~~6.1.1.0.mum |
파일 버전 |
해당 사항 없음 |
파일 크기 |
1,467 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Package_for_kb2847346_sp1~31bf3856ad364e35~amd64~~6.1.1.0.mum |
파일 버전 |
해당 사항 없음 |
파일 크기 |
2,830 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_db0bd6362bd6634e.manifest |
파일 버전 |
해당 사항 없음 |
파일 크기 |
4,690 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
02:16 |
플랫폼 |
해당 사항 없음 |
지원되는 모든 IA-64 기반 버전의 Windows Server 2008 R2에 대한 추가 파일
파일 이름 |
Ia64_44d491142723affea686ec2fba3cb4ac_31bf3856ad364e35_6.1.7601.22590_none_dc26e555dbabe437.manifest |
파일 버전 |
해당 사항 없음 |
파일 크기 |
1,046 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Ia64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_749a34563f163919.manifest |
파일 버전 |
해당 사항 없음 |
파일 크기 |
8,303 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Package_1_for_kb2847346~31bf3856ad364e35~ia64~~6.1.1.0.mum |
파일 버전 |
해당 사항 없음 |
파일 크기 |
2,029 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Package_for_kb2847346_sp1~31bf3856ad364e35~ia64~~6.1.1.0.mum |
파일 버전 |
해당 사항 없음 |
파일 크기 |
1,446 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
06:35 |
플랫폼 |
해당 사항 없음 |
파일 이름 |
Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_db0bd6362bd6634e.manifest |
파일 버전 |
해당 사항 없음 |
파일 크기 |
4,690 |
날짜(UTC) |
05-Feb-2014 |
시간(UTC) |
02:16 |
플랫폼 |
해당 사항 없음 |
해결 방법
이 문제를 해결 하려면 상황에 따라 다음 해결 방법 중 하나를 사용 합니다.
시나리오 1에 대 한 해결 방법
Ping.exe 같은 응용 프로그램을 강제로 중지 되지 않았는지 확인 합니다. 대신, 응용 프로그램을 정상적으로 하도록 종료 합니다.
또한 Windows Server 2012 업그레이드 합니다. 이 문제는 Windows Server 2012 해결 됩니다. 이 수정 프로그램에서 응용 프로그램이 중지 되는 방식에 관계 없이 메모리 누수 NSI 서비스가 되지 않습니다.
시나리오 2 해결 방법
소프트웨어 개발자는 여러 ICMP 핸들 ICMP 요청을 보낼를 작성 해야 합니다. ICMP 패킷이 많이 보내야 하는 경우 해야 원시 소켓을 사용 하 고 직접 보내고 ICMP 패킷을 원시 소켓에서 수신 합니다. 이 경우 최상의 성능을 제공 합니다.
시나리오 3 해결 방법
이 시나리오에서는 네트워크 어댑터를 활성화 및 비활성화 하는 경우 메모리 사용 즉시 감소 했으나 CPU 사용량의 스파이크 짧은 있습니다.
이 이유는 커널에서 IP 주소나 인터페이스를 변경 하면 NSI 서비스에 알립니다. NSI 서비스 하려고 하면 notifiy 알림에 대해 등록 되어 있는 모든 클라이언트. RPC는 서비스가 존재 하지 않는 클라이언트 프로세스를 알릴 때 오류를 보고 합니다. 따라서 NSI 서비스는 해당 클라이언트 프로세스에 대해 저장 된 모든 상태 정보를 삭제 합니다. 이런 일이 발생 한 후 해당 메모리가 해제 됩니다.
이 경우 몇 백 천 알림은 등록 합니다. 이벤트가 발생 한 후에 클라이언트 잘못 된 메모리를 모두 해제 됩니다.
이 문제는 Windows 8에서 해결 됩니다.