Pärast selle värskenduse rakendamist pead lisama jälituslipp-T8075 Startup parameetrina selle muudatuse lubamiseks.
Sümptomid
Kui käivitate päringu Microsoft SQL Server 2012 64-bitises versioonis, kuvatakse SQL serveri tõrkelogi järgmine tõrketeade, mis sarnaneb järgmisega:
Nurjunud lehtede eraldamine: FAIL_PAGE_ALLOCATION 513
Päringud võtavad täitmise lõpuleviimiseks kaua aega ja SOS_MEMORY_TOPLEVELBLOCKALLOCATOR ootab. Kui uurite järgmisi andmeid, leiate, et saadaval on väga väike virtuaalmälu aadressiruumi.
-
DBCC MEMORYSTATUS – protsessi/süsteemi loendab jaotis-saadaolev virtuaalmälu
-
DMV: sys.dm_os_process_memory veerg virtual_address_space_available_kb
Need väärtused alustavad umbes 8 TB (TB) x64-protsessi kaudu ja jätkavad ronimist ja jõuavad mõne gigabaitini (GB). Kui olete etapil, kus saadaolev virtuaalmälu aadressiruumi on väga väike, võivad päringud, mis proovivad mälu eraldada, esineda ka CMEMTHREAD. Järgmised andmepunktid püsivad aja jooksul veelgi.
-
DMV: sys.dm_os_process_memory ja sys.dm_os_memory_nodes veerg virtual_address_space_reserved_kb
-
DBCC MEMORYSTATUS-mälu Manageri jaotis – VM reserveeritud
Tavaliselt suurendavad need väärtused arvu "Max server Memory" kordselt kuni peaaegu 8 TB.
Põhjus
Kui SQL serveri protsess on jõudnud olekusse, kus Total serveri mälu = Target server Memory = Max serveri mälu, on SQL serveri mälu halduris poliitika, mis võimaldab uutel eraldamisel taotleda mitu 8 KB lehekülge, et see saaks ajutiselt õnnestuda. Selle tingimuse korral võib korduv jaotuse muster põhjustada virtuaalmälu ja virtuaalmälu aadressiruumi killustatust. Kui see protsess kordab mitu korda, on SQL serveri virtuaalmälu aadressiruumi ammendunud ja te märkate varem mainitud sümptomeid.
Lahendus
Kumulatiivse värskenduse teave
Probleem parandati esmakordselt SQL serveri järgmises koondvärskenduses.
Iga uus koondvärskenduses SQL Server sisaldab kõiki käigultparandused ja kõik turvaparandusi, mis kuulusid eelmise koondvärskenduse. Soovitame teil alla laadida ja installida kumulatiivseid värskendusi SQL serveri jaoks:
See käigultparandus takistab nii mälust väljas kui ka saadaoleva virtuaalmälu aadressiruumi pidevat vähendamist.
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes.
Lisateave
-
Windows 2012 R2 võimaldab virtuaalmälu aadressiruumi kasvada nii suureks kui 128 TB. Seetõttu ei pruugi te seda probleemi märgata Windows 2012 R2 keskkonnas. Lisateavet leiate järgmistest artiklitest Windowsi dev Center:Windowsi ja Windows Serveri mälu piirangud
-
Kui kuvatakse virtuaalmälu aadressiruumi pidev kasv isegi pärast paranduse rakendamist, saate määrata, millised päringud või toimingud nõuavad suurt arvu mälu Page_allocated pikendatud sündmuse abil. Proovi skript näeb välja selline:
CREATE EVENT SESSION [memory_tracking] ON SERVERADD 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)GO
Tavaliselt on need Logi varukoopiad ja registri hooldustööd, mis toimuvad sageli.