Ko uporabite to posodobitev, morate dodati zastavico sledenja -T8075 kot zagonski parameter, da omogočite to spremembo.
Znaki
Ko zaženete poizvedbo v 64-bitni različici strežnika Microsoft SQL Server 2012, se prikaže sporočilo o napaki, ko zmanjka pomnilnika, podobno sporočilu v dnevniku napak strežnika SQL Server:
Opomba
Neuspešna dodelitev strani: FAIL_PAGE_ALLOCATION 513
Izvajanje poizvedb traja dolgo časa in naleti na SOS_MEMORY_TOPLEVELBLOCKALLOCATOR čakanja.
Ko pregledate te informacijske točke, boste ugotovili, da je na voljo navideznega naslovnega prostora zelo malo:
- DBCC MEMORYSTATUS – razdelek s štetjem procesov/sistemov – razpoložljiv navidezni pomnilnik
- DMV: sys.dm_os_process_memory – stolpec virtual_address_space_available_kb
Te vrednosti se začnejo približno 8 TB v procesu x64, nato pa se navzdol dvigajo in dosežejo nekaj gigabajtov (GB).
Ko ste na stopnji, ko je razpoložljivega navideznega naslovnega prostora zelo malo, lahko poizvedbe, ki poskušajo izvesti dodeljevanje pomnilnika, prav tako naletijo na vrsto CMEMTHREAD čakanja.
Sčasoma se bo število teh podatkovnih točk povečevalo:
- DMV: sys.dm_os_process_memory in sys.dm_os_memory_nodes – stolpec virtual_address_space_reserved_kb
- DBCC MEMORYSTATUS – Razdelek »Upravitelj pomnilnika« – rezervirano za navidezni računalnik
Te vrednosti se običajno večkratniki vrednosti »največji dovoljeni pomnilnik strežnika« povečajo do skoraj 8 TB.
Vzrok
Ko proces SQL Server doseže stanje, ko skupni pomnilnik strežnika = pomnilnik ciljnega strežnika = največji pomnilnik strežnika, so v upravitelju pomnilnika SQL Server na voljo pravilniki, ki omogočajo, da nove dodelitve zahtevajo več strani velikosti 8 KB, da začasno uspejo. Ponavljajoči se vzorec dodeljevanja v takih pogojih lahko povzroči fragmentacijo pomnilniških blokov in porabo navideznega naslovnega prostora. Če se ta postopek ponovi večkrat, bo navidezni naslovni prostor strežnika SQL Server izčrpan in opazili boste prej omenjene simptome.
Rešitev
Informacije o zbirni posodobitvi
Težava je bila prvič odpravljena v naslednji zbirni posodobitvi sistema SQL Server.
Priporočilo: Namestite najnovejšo zbirno posodobitev za SQL Server
Vsaka nova zbirna posodobitev za SQL Server vsebuje vse sprotne in varnostne popravke, ki so bili vključeni v prejšnjo zbirno posodobitev. Priporočamo, da prenesete in namestite najnovejše zbirne posodobitve za SQL Server:
Ta sprotni popravek preprečuje pomanjkanje pomnilnika in stalno zmanjševanje razpoložljivega navideznega naslovnega prostora.
Stanje
Microsoft je potrdil, da gre za težavo v Microsoftovih izdelkih, ki so navedeni v razdelku »Velja za«.
Več informacij
Windows 2012 R2 omogoča, da navidezni naslovni prostor naraste do 128 TB. Zato v okoljih s sistemom Windows 2012 R2 te težave morda ne boste opazili. Če želite več informacij, glejte to temo v središču za razvijalce sistema Windows:
Omejitve pomnilnika za izdaje sistemov Windows in Windows Server
Če tudi po uporabi popravka opazite stalno rast navideznega naslovnega prostora, lahko z razširjenim dogodkom Page_allocated določite, katere poizvedbe ali operacije zahtevajo velike dele pomnilnika. Vzorčni skript je videti tako:
CREATE EVENT SESSION [memory_tracking] ON SERVER ADD EVENT sqlos.page_allocated( ACTION(package0.callstack,sqlos.cpu_id,sqlos.task_address,sqlos.worker_address,sqlserver.database_id,sqlserver.query_hash,sqlserver.request_id,sqlserver.session_id,sqlserver.sql_text) WHERE ([number_pages]>(1))) ADD TARGET package0.event_file(SET filename=N'E:\Data\MSSQL11.MSSQLSERVER\MSSQL\Log\memory_tracking.xel') WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=PER_CPU,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF) GOObičajno so to postopke varnostnega kopiranja dnevnika in vzdrževanja kazala, ki se pogosto pojavijo.