Svchost.exe veikia NSI tarnybos nutekėjimas atminties ir nepuslapinės atminties nutekėjimas Žymė NSpc

Taikoma
Windows Server 2008 R2 Service Pack 1 Windows 7

Požymiai

Tarkime, kad turite taikomąją programą arba įrankį, kuris veikia "Windows 7" arba "Windows Server 2008 R2" ir kad programa arba įrankis atlieka vieną ar daugiau iš šių užduočių:

  • Kito serverio stebėjimas naudojant ICMP arba ping.exe
  • Kelių trumpalaikių procesų pradėjimas darbui atlikti, tada procesas sustabdomas
  • Atliekant bet kokią tinklo veiklą, procesą sustabdo kita programa arba scenarijus

Tokiu atveju, kai serveris nepertraukiamai veikia kelias valandas arba kelias dienas, pastebite, kad tinklo saugyklos sąsajos (NSI) tarnybos atmintis nutekėjo. Be to, pastebite šiuos požymius:

  • Jei sustabdysite stebėjimo programinę įrangą, atminties nutekėjimas sustos.
  • Jei sustabdysite programą ir iš naujo paleisite kompiuterį, NSI tarnyba neatskleis atminties nutekėjimo.
  • Kai kuriais atvejais, jei išjungsite ir įjungsite tinklo adapterį, pastebėsite staigų NSI tarnybos CPU naudojimo šuolį. Be to, atminties naudojimas iš karto sumažėja nuo 1 arba 2 gigabaitų (GB) iki 200 arba 300 megabaitų (MB).

Ši problema gali kilti bet kuriame iš šių scenarijų.

1 scenarijus

Jei tokia taikomoji programa, kaip ping.exe, priverstinai sustabdoma, gali būti, kad funkcija IcmpCloseHandle nėra iškviesta. Tokiu atveju NSI tarnyba gali aptikti, kad klientas yra pasiekiamas. Todėl tarnyba nuolat siunčia pranešimus apie bet kokius ICMP pranešimus. Kadangi kliento nėra, pranešimų sąrašas vis didėja. Sąrašas išvalomas tik sustabdžius NSI tarnybą.

Norėdami siųsti ryšio užklausą, turite atidaryti ICMP rankenėlę ir tada naudoti šias kitas IP pagalbinės priemonės funkcijas ICMP duomenims siųsti ir gauti:

Funkcija IcmpCreateFile

Funkcija ICMPCreateFile

Funkcija IcmpSendEcho2Ex

Kai programa išsiunčia ping, ji turi iškviesti funkciją IcmpCloseHandle , kad uždarytų ICMP rankenėlę.

2 scenarijus

Programinės įrangos kūrėjas sukuria programą, kuri siunčia ir gauna ICMP pranešimus naudodamas IPHlelper API. Jei ICMP pranešimams keliems klientams siųsti naudojama tik viena ICMP rankenėlė ir jei ji tai daro labai dideliu greičiu, IPHelper API, kuriai pranešama gavus pranešimą, negali išlaikyti greičio. Šiuo atveju pastebite, kad NSI tarnybos atmintis toliau auga eksponentiškai. Be to, pastebite, kad NSI tarnyba intensyviai naudoja CPU (nsisvc.dll).

3 scenarijus

Turite programą arba tarnybą, kuri tiesiogiai ar netiesiogiai naudoja IP Helper funkcijas. Programa sustabdoma arba sustabdoma ir neuždaroma sklandžiai, kai neatšaukiama kiekvieno pranešimo registracija (CancelMibChangeNotify2). Tokiu atveju NSI serveris nelaukia sustabdyto proceso registracijos. Jei yra daug paraiškų sustabdymo atvejų, NSI paslauga turės daug užsitęsusių registracijų. RPC, asinchroninė būsena ir kita informacija tvarkoma kiekvienos registracijos metu. Tai padidina atminties naudojimą. Paprastai tokios registracijos atliekamos keičiant sąsają arba vienadresio perdavimo IP adresą. Jei valstybėje nesikeičia, šios registracijos vis tiek išlaikomos.

Registracijos metu naudojamos šios pranešimų funkcijos:

Priežastis, dėl kurios daugelis programų neiškviečia (CancelMibChangeNotify2) arba sustabdo procesą, aptariama "Microsoft" kūrėjų tinklo svetainės temoje " NotifyIpInterfaceChange" funkcija .

Iškvietus funkciją "NotifyIpInterfaceChange ", kad užsiregistruotų pranešimams apie pakeitimus, šie pranešimai toliau siunčiami tol, kol programa išsiregistruoja, kad gautų pranešimus apie pakeitimus, arba programa sustos. Jei programa sustabdoma, sistema automatiškai išregistruoja bet kokią pranešimų apie pakeitimus registraciją. Rekomenduojame sukonfigūruoti programą, kad ji aiškiai išsiregistruotų ir gautų keitimų pranešimus prieš ją sustabdant.

Kiekvienai registracijai pranešimui taip pat skiriate šiek tiek nepuslapinės telkinio (NPP) atminties NSpc žymai.

Priežastis

Ši problema kyla todėl, kad procesas, kuris registruojasi pranešimams, išeina neišregistravęs iš NSI tarnybos. Todėl NSI registracijos nutekėjimas sukelia NSI tarnybos atminties nutekėjimą. Be to, dėl AE nuteka atmintis NSI tarpinio serverio konteksto žymėje NSpc (NSI.dll).

Sprendimas

Karštųjų pataisų informacija

Palaikomos karštosios pataisos pasiekiamos "Microsoft" palaikymo svetainėje. Tačiau ši karštoji pataisa skirta ištaisyti tik šiame straipsnyje aprašytą problemą. Taikykite šią karštąją pataisą tik toms sistemoms, kurios susiduria su šiame straipsnyje aprašyta problema. Ši karštoji pataisa gali būti papildomai patikrinta. Todėl, jei jūsų ši problema stipriai nepaveikė, rekomenduojame palaukti kito programinės įrangos naujinimo, kuriame yra ši karštoji pataisa.

Jei karštąją pataisą galima atsisiųsti, šio žinių bazės straipsnio viršuje yra skyrius "Karštųjų pataisų atsisiuntimas". Jei šis skyrius nerodomas, susisiekite su "Microsoft" klientų aptarnavimo ir palaikymo tarnyba, kad gautumėte karštąją pataisą.

Atkreipkite dėmesį Iškilus papildomų problemų arba prireikus trikčių diagnostikos, gali tekti sukurti atskirą aptarnavimo užklausą. Įprastos palaikymo išlaidos bus taikomos papildomiems palaikymo klausimams ir problemoms, kurios neatitinka šios konkrečios karštosios pataisos reikalavimų. Norėdami gauti visą "„Microsoft“" klientų aptarnavimo ir palaikymo tarnybos telefonų numerių sąrašą arba sukurti atskirą aptarnavimo užklausą, apsilankykite šioje "„Microsoft“" žiniatinklio svetainėje:

http://support.microsoft.com/contactus/?ws=support

Atkreipkite dėmesį Formoje "Karštųjų pataisų atsisiuntimas" rodomos kalbos, kurioms galima naudoti karštąją pataisą. Jei nematote savo kalbos, vadinasi, nėra tos kalbos karštųjų pataisų.

Būtinosios sąlygos

Jei norite taikyti šią karštąją pataisą, turite turėti įdiegtą "Windows 7" arba "Windows Server 2008 R2" 1 pakeitimų paketą.

Reikia paleisti iš naujo

Pritaikę šią karštąją pataisą turėsite iš naujo paleisti kompiuterį.

Karštųjų pataisų pakeitimo informacija

Ši karštoji pataisa nepakeičia anksčiau išleistų karštųjų pataisų.

Failo informacija

Naudojant šios karštosios pataisos anglų kalbos (Jungtinės Valstijos) versiją, įdiegiami failai su tolesnėse lentelėse išvardytais atributais. Šių failų datos ir laikai nurodyti pasauliniu koordinuotuoju laiku (UTC). Šių failų datos ir laikai jūsų vietiniame kompiuteryje rodomi vietiniu laiku, atsižvelgiant į jūsų dabartinį vasaros laiko (DST) poslinkį. Be to, data ir laikas gali pasikeisti, kai su failais atliksite tam tikras operacijas.

"Windows 7" ir "Windows Server 2008 R2" failo informacija ir pastabos

Svarbu "Windows 7" karštosios pataisos ir "Windows Server 2008 R2" karštosios pataisos įtrauktos į tuos pačius paketus. Tačiau karštųjų pataisų užklausos puslapyje karštosios pataisos yra išvardytos prie abiejų operacinių sistemų. Norėdami paprašyti karštųjų pataisų paketo, kuris taikomas vienai arba abiem operacinėms sistemoms, pasirinkite karštąją pataisą, nurodytą puslapio dalyje "Windows 7/Windows Server 2008 R2". Visada vadovaukitės straipsnių skyriumi "Taikoma", kad nustatytumėte, kuriai operacinei sistemai taikomos kiekviena karštoji pataisa.

  • Failus, taikomus konkrečiam produktui, SR_Level (RTM, SPn) ir paslaugų šakai (LDR, GDR), galima nustatyti išnagrinėjus failų versijų numerius, kaip parodyta toliau pateiktoje lentelėje.

    Versija Produktas SR_Level Paslaugos šaka
    6.1.760 0. 16xxx „Windows 7“ ir „Windows Server 2008 R2“ RTM GDR
    6.1.760 1. 22xxx „Windows 7“ ir „Windows Server 2008 R2“ SP1 LDR
  • GDR tarnybos šakose yra tik tos pataisos, kurios plačiai išleidžiamos plačiai paplitusioms itin svarbioms problemoms spręsti. Be plačiai išleistų pataisų, LDR tarnybos šakose yra karštųjų pataisų.

  • Kiekvienai aplinkai įdiegti MANIFEST failai (.manifest) ir MUM failai (.mum) yra išvardyti atskirai skyriuje "Papildoma failų informacija, skirta "Windows 7" ir "Windows Server 2008 R2".

  • MUM ir MANIFEST failai bei susiję saugos katalogo (.cat) failai yra labai svarbūs atnaujintų komponentų būsenai palaikyti. Saugos katalogo failai, kurių atributai nenurodyti, pasirašomi "„Microsoft“" skaitmeniniu parašu.

Visoms palaikomoms "Windows 7" x86 pagrindo versijoms

Failo pavadinimas Failo versija Failo dydis Data Laikas Platforma
Nsi.dll 6.1.7600.16385 8,704 2009-Liep-14 01:16 x86
Nsiproxy.sys 6.1.7600.16385 16,896 2009-Liep-13 23:12 x86
Nsisvc.dll 6.1.7601.22590 20,480 2014 m. vasario 05 d. 02:03 x86
Winnsi.dll 6.1.7600.16385 16,896 2009-Liep-14 01:16 x86

Visoms palaikomoms "Windows 7" ir "Windows Server 2008 R2" x64 pagrindo versijoms

Failo pavadinimas Failo versija Failo dydis Data Laikas Platforma
Nsi.dll 6.1.7600.16385 13,824 2009-Liep-14 01:41 x64
Nsiproxy.sys 6.1.7601.22590 24,576 2014 m. vasario 05 d. 01:15 x64
Nsisvc.dll 6.1.7601.22590 26,624 2014 m. vasario 05 d. 02:42 x64
Winnsi.dll 6.1.7600.16385 26,112 2009-Liep-14 01:41 x64
Nsi.dll 6.1.7601.22590 8,704 2014 m. vasario 05 d. 02:03 x86
Winnsi.dll 6.1.7601.22590 16,896 2014 m. vasario 05 d. 02:04 x86

Visoms palaikomoms IA-64 pagrindo "Windows Server 2008 R2" versijoms

Failo pavadinimas Failo versija Failo dydis Data Laikas Platforma
Nsi.dll 6.1.7600.16385 18,944 2009-Liep-14 01:48 IA-64
Nsiproxy.sys 6.1.7601.22590 53,760 2014 m. vasario 05 d. 00:50 IA-64
Nsisvc.dll 6.1.7601.22590 60,928 2014 m. vasario 05 d. 01:48 IA-64
Winnsi.dll 6.1.7600.16385 38,912 2009-Liep-14 01:50 IA-64
Nsi.dll 6.1.7601.22590 8,704 2014 m. vasario 05 d. 02:03 x86
Winnsi.dll 6.1.7601.22590 16,896 2014 m. vasario 05 d. 02:04 x86

Papildoma informacija apie failus, skirtus "Windows 7" ir "Windows Server 2008 R2"

Papildomi failai visoms palaikomoms "Windows 7" x86 pagrindo versijoms

Failo vardas Package_1_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum
Failo versija Netaikoma
Failo dydis 1,822
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Package_2_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum
Failo versija Netaikoma
Failo dydis 1,805
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Package_3_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum
Failo versija Netaikoma
Failo dydis 1,807
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Package_for_kb2847346_rtm~31bf3856ad364e35~x86~~6.1.1.0.mum
Failo versija Netaikoma
Failo dydis 1,459
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Package_for_kb2847346_sp1~31bf3856ad364e35~x86~~6.1.1.0.mum
Failo versija Netaikoma
Failo dydis 1,918
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas X86_dfca12963d5c03edca970b29ad513eb4_31bf3856ad364e35_6.1.7601.22590_none_ff32d7aebbbb6891.manifest
Failo versija Netaikoma
Failo dydis 699
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas X86_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_749890603f18301d.manifest
Failo versija Netaikoma
Failo dydis 8,301
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:38
Platforma Netaikoma

Papildomi failai visoms palaikomoms "Windows 7" ir "Windows Server 2008 R2" x64 pagrindo versijoms

Failo vardas Amd64_37e172e525713d1718cb98daea282913_31bf3856ad364e35_6.1.7601.22590_none_9888f3a0165278fe.manifest
Failo versija Netaikoma
Failo dydis 1,048
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Amd64_3839818617f8250fd6f59e35da1df9bd_31bf3856ad364e35_6.1.7601.22590_none_8fbf427f98b0d1cb.manifest
Failo versija Netaikoma
Failo dydis 703
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Amd64_a9af583825031567fe0548a9c2c728ab_31bf3856ad364e35_6.1.7601.22590_none_59ced916edddc9da.manifest
Failo versija Netaikoma
Failo dydis 703
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Amd64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_d0b72be3f775a153.manifest
Failo versija Netaikoma
Failo dydis 8,305
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:41
Platforma Netaikoma
Failo vardas Package_1_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum
Failo versija Netaikoma
Failo dydis 1,832
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Package_2_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum
Failo versija Netaikoma
Failo dydis 2,237
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Package_3_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum
Failo versija Netaikoma
Failo dydis 2,015
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Package_4_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum
Failo versija Netaikoma
Failo dydis 2,036
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Package_for_kb2847346_rtm~31bf3856ad364e35~amd64~~6.1.1.0.mum
Failo versija Netaikoma
Failo dydis 1,467
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Package_for_kb2847346_sp1~31bf3856ad364e35~amd64~~6.1.1.0.mum
Failo versija Netaikoma
Failo dydis 2,830
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_db0bd6362bd6634e.manifest
Failo versija Netaikoma
Failo dydis 4,690
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 02:16
Platforma Netaikoma

Papildomi failai visoms palaikomoms IA-64 pagrįstoms "Windows Server 2008 R2" versijoms

Failo vardas Ia64_44d491142723affea686ec2fba3cb4ac_31bf3856ad364e35_6.1.7601.22590_none_dc26e555dbabe437.manifest
Failo versija Netaikoma
Failo dydis 1,046
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Ia64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_749a34563f163919.manifest
Failo versija Netaikoma
Failo dydis 8,303
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Package_1_for_kb2847346~31bf3856ad364e35~ia64~~6.1.1.0.mum
Failo versija Netaikoma
Failo dydis 2,029
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Package_for_kb2847346_sp1~31bf3856ad364e35~ia64~~6.1.1.0.mum
Failo versija Netaikoma
Failo dydis 1,446
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 06:35
Platforma Netaikoma
Failo vardas Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_db0bd6362bd6634e.manifest
Failo versija Netaikoma
Failo dydis 4,690
Data (UTC) 2014 m. vasario 05 d.
Laikas (UTC) 02:16
Platforma Netaikoma

Sprendimo būdas

Norėdami išspręsti šią problemą, naudokite vieną iš toliau nurodytų sprendimo būdų, atitinkančių jūsų situaciją.

1 scenarijaus sprendimo būdas

Įsitikinkite, kad taikymas, pvz., ping.exe, nėra priverstinai sustabdytas. Vietoj to leiskite programai sklandžiai išsijungti.

Arba atnaujinkite versiją į "Windows Server 2012". Ši problema išspręsta "Windows Server 2012". Ši pataisa apsaugo nuo NSI tarnybos atminties nutekėjimo, neatsižvelgiant į tai, kaip programa sustabdoma.

2 scenarijaus sprendimo būdas

Programinės įrangos kūrėjas turi sukurti kelias ICMP sistemines nuorodas ICMP užklausoms siųsti. Jei turite siųsti daug ICMP paketų, turėtumėte naudoti neapdorotus lizdus ir tiesiogiai siųsti bei gauti ICMP paketus į RAW lizdą. Tai užtikrins greičiausią našumą.

3 scenarijaus sprendimo būdas

Tokiu atveju, jei išjungsite ir įjungsite tinklo adapterį, atminties naudojimas iš karto sumažės, tačiau CPU naudojimas šiek tiek padidės.

Taip atsitinka todėl, kad pasikeitus IP adresui arba sąsajai branduolys praneša NSI tarnybai. Tada NSI tarnyba bando pranešti apie visus klientus, kurie yra užsiregistravę pranešimui. Kai tarnyba bando įspėti kliento procesą, kurio nėra, RPC pateikia klaidos pranešimą. Todėl NSI tarnyba panaikina visą būsenos informaciją, kuri buvo įrašyta to kliento procesui. Kai tai įvyksta, atmintis atlaisvinama.

Tokiu atveju užregistruojami keli šimtai tūkstančių pranešimų. Įvykus įvykiui, visa šių netinkamų klientų atmintis bus atlaisvinta.

Ši problema išspręsta „Windows 8“.