徵狀
假設您有應用程式或 Windows Server 2008 R2,Windows 7 中正在執行的工具和應用程式或工具會執行一或多個下列工作:
-
使用 ICMP 或 ping.exe 監視另一部伺服器
-
然後停止啟動多個短暫的處理程序來執行工作,以及程序
-
其他的應用程式或指令碼然後停止任何的網路活動,以及程序
在此情況下,您的伺服器會持續執行數個小時或幾天,則您注意之後網路存放區介面 」 (NSI) 服務會遺漏記憶體。 此外,您會注意到下列的徵狀:
-
如果您停止監視軟體時,便會停止記憶體流失。
-
如果您停止應用程式,然後重新啟動電腦時,則會在 「 NSI 」 服務中發生沒有記憶體流失。
-
在某些情況下,如果您停用,然後啟用 [網路介面卡,您注意到 CPU 使用量突然突然的增加 NSI 服務。 此外,記憶體使用量立即來自降 1 或 2 gb (GB) 以 200 或 300 百萬位元組 (MB)。
這個問題,可能會出現在下列情況。
案例 1
如果應用程式,例如 ping.exe 強制停止,則可能不會呼叫IcmpCloseHandle函式。 在此情況下,NSI 服務可能會偵測沒有用戶端可用。 因此,服務會持續傳送有關任何 ICMP 訊息的通知。 因為用戶端不存在,通知清單不斷增加。 清單不會未取得加以清除,直到 NSI 服務被停止。
若要傳送 ping,您必須開啟 ICMP 控點,然後再使用 [傳送及接收 ICMP 資料 [這些 IP 協助程式函式:
應用程式傳送 ping 之後,它必須呼叫IcmpCloseHandle 函式,以關閉 [ICMP] 控點。
案例 2
軟體開發人員會建立要傳送和接收 ICMP 訊息,請使用 IPHlelper Api 的應用程式。 如果只有一個 ICMP 控制碼用來傳送 ICMP 訊息以供多個用戶端,而且如果這種做法會非常高的速率,IPHelper API 都要告知收到訊息時,無法維持速度。 在此情況下,您可以注意到的 NSI 服務記憶體會繼續,更是成指數成長。 此外,您會發現的高 CPU 使用率 NSI 服務 (nsisvc.dll)。
狀況 3
您有應用程式或直接或間接使用IP Helper 函式的服務。 應用程式停止或已停止,而且它不會不正常時結束每個告知登錄不是已取消 (CancelMibChangeNotify2)。在此情況下,NSI 伺服器會保持擱置中的註冊,已停止處理程序。如果有許多的應用程式都會執行個體,NSI 服務會有許多延遲登錄。每個註冊保留有 RPC 非同步的狀態和其他資訊。如此會將記憶體使用量。一般而言,因此這些登錄有針對介面變更] 或 [單點傳播 IP 位址變更。如果狀態沒有變更,因此這些登錄會仍會保留。
在註冊程序期間使用下列的告知函式:
NotifyIpInterfaceChange 函式主題會討論的原因,許多應用程式,請不要呼叫 (CancelMibChangeNotify2) 或停止處理序在 Microsoft 開發人員網路網站上。
NotifyIpInterfaceChange函式呼叫來註冊變更通知之後,這些通知會繼續傳送,直到應用程式會移除註冊以接收變更通知 」 或 「 應用程式的停駐點為止。 如果應用程式停止,則系統會自動解除登錄變更通知的任何登錄。 我們建議您設定應用程式明確地取消註冊變更通知的 [之前它就會停止。
您對每個告知的註冊,還會配置一些非分頁集區 (NPP) 記憶體供NSpc 的標記。
原因
之所以發生這個問題,是因為登錄通知處理序結束而不 NSI 服務的第一個解除登錄。 因此,在 NSI 中的註冊遺漏造成記憶體流失 NSI 服務中。此外NPP 遺漏 NSI Proxy 內容標記 NSpc (NSI.dll) 中的記憶體。
解決方案
Hotfix 資訊
使用 Microsoft 支援從支援的 hotfix。 不過,此 Hotfix 僅用於修正本文中所述的問題。 此 hotfix 只適用於發生本文所述之問題的系統。 此 hotfix 可能會接受其他測試。 因此,如果此問題的影響不會很嚴重,我們建議您等候含此 hotfix 的下一版軟體更新。
如果 hotfix 可供下載,在此知識庫文件頂端將出現「可用的 Hotfix」區段。 如果這個區段沒有出現,請連絡 Microsoft 客戶服務及支援以取得 hotfix。
注意: 如果發生其他問題,或如果需要進行疑難排解,您可能必須建立個別的服務要求。 收取支援費用會套用到其他支援問題和此特定 hotfix 無法解決的問題。 如需 Microsoft 客戶服務和支援的電話號碼或建立個別的服務要求的完整清單,請移至下列 Microsoft 網站:
http://support.microsoft.com/contactus/?ws=support
注意: 「 下載 Hotfix 」 表單會顯示 hotfix 可用的語言。 如果看不到您的語言,是因為未提供該語言的 Hotfix 。
先決條件
若要套用此 hotfix,您必須擁有 Windows 7 或安裝的 Windows Server 2008 R2 的Service Pack 1 。
重新啟動需求
套用此 hotfix 後,您必須重新啟動電腦。
Hotfix 取代資訊
此 hotfix 不會取代任何先前發行的 hotfix。
檔案資訊
此 Hotfix 的英文版 (美國) 會安裝具有下表中所列屬性的檔案。 這些檔案的日期與時間是以國際標準時間 (UTC) 表示。 本機電腦上這些檔案的日期與時間,是以您當地的時間和目前的日光節約時間 (DST) 的時差來顯示。 此外,當您對檔案執行特定作業時,其日期與時間可能會改變。
Windows 7 和 Windows Server 2008 R2 檔案資訊和注意事項
重要 Windows 7 hotfix 及 Windows Server 2008 R2 hotfix 隨附在相同的套件中。 不過,在 [Hotfix 要求] 頁面上的 Hotfix 會在這兩個作業系統下列出。 若要要求套用至一或兩個作業系統的 Hotfix 套件,請選取此頁面上列在 Windows 7/Windows Server 2008 R2 之下的 Hotfix。 永遠參考文件的〈套用〉一節以判斷實際套用每個 hotfix 的作業系統。
-
藉由檢查的檔案版本號碼,如下列表格所示,可以識別套用至特定產品、 SR_Level (RTM、 SPn) 及服務分支 (LDR、 GDR) 的檔案。
版本
產品
SR_Level
服務分支
6.1.760 0。 16xxx
Windows 7 和 Windows Server 2008 R2
RTM
GDR
6.1.760 1. 22xxx
Windows 7 和 Windows Server 2008 R2
SP1
LDR
-
GDR 服務分支只包含這些修正程式所發行的通用廣泛的極為重要問題。 LDR 服務分支除了通用修正程式之外,還包含 Hotfix。
-
資訊清單檔案 (.manifest) 及菊檔案 (.mum) 所安裝的每個環境都分別列於 < 其他檔案的="" windows="" 7="" 和="" windows="" server="" 2008="" r2="" 資訊=""> 一節。
-
MUM 及 MANIFEST 檔案,以及相關的安全性目錄 (.cat) 檔案,對維護更新元件的狀態非常重要。 屬性未列出的安全性目錄檔案是以 Microsoft 數位簽章簽署。
適用於所有支援的 x86 版本 Windows 7
檔案名稱 |
檔案版本 |
檔案大小 |
日期 |
時間 |
平台 |
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
檔案名稱 |
檔案版本 |
檔案大小 |
日期 |
時間 |
平台 |
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
檔案名稱 |
檔案版本 |
檔案大小 |
日期 |
時間 |
平台 |
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 服務嘗試以告知所有已註冊要進行通知用戶端。 當服務嘗試通知用戶端處理程序不存在時,RPC 會報告錯誤。 因此,NSI 服務會刪除所有該用戶端處理程序所儲存的狀態資訊。 發生這種情況之後,會釋放該記憶體。
在此情況下,數個 1000 通知已註冊。 在事件發生之後,會釋放這些無效的用戶端的所有記憶體。
在 Windows 8 中解決此問題。