Dela via


sys.dm_os_out_of_memory_händelser

gäller för:Azure SQL DatabaseAzure SQL Managed Instance

Returnerar en uppsättning senaste OOM-händelser (out of memory).

Mer information om minnesbrist i Azure SQL Database finns i Felsöka minnesfel i Azure SQL Database.

Kolumnnamn Datatyp Beskrivning
event_time datetime OOM-händelsetid. Får inte vara ogiltig.
oom_cause tinyint Ett numeriskt värde som anger OOM-rotorsaken. OOM-orsaken bestäms av en heuristisk algoritm och ges en begränsad grad av förtroende. Får inte vara ogiltig.
oom_cause_desc nvarchar(30) Beskrivning av oom_cause. Får inte vara ogiltig.
0. UNKNOWN – OOM-orsaken kunde inte fastställas
1. HEKATON_POOL_MEMORY_LOW – Otillräckligt minne i resurspoolen som används för In-Memory OLTP. Mer information finns i Övervaka In-Memory OLTP.
2. MEMORY_LOW – Otillräckligt minne tillgängligt för databasmotorprocessen
3. OS_MEMORY_PRESSURE - OOM på grund av externt minnestryck från operativsystemet
4. OS_MEMORY_PRESSURE_SQL – OOM på grund av externt minnestryck från andra instanser av databasmotorn
5. NON_SOS_MEMORY_LEAK – OOM på grund av en läcka i icke-SOS-minne, till exempel inlästa moduler
6. SERVERLESS_MEMORY_RECLAMATION – OOM som rör minnesåtertagning i en serverlös databas
7. MEMORY_LEAK - OOM på grund av en läcka i SOS-minnet
8. SLOW_BUFFER_POOL_SHRINK – OOM på grund av att buffertpoolen inte frigör minne tillräckligt snabbt under minnestryck
9. INTERNAL_POOL – Otillräckligt minne i den interna resurspoolen
10. SYSTEM_POOL – Otillräckligt minne i en systemresurspool
11. QUERY_MEMORY_GRANTS – OOM på grund av stora minnesbidrag som innehas av frågor
12. REPLICAS_AND_AVAILABILITY – OOM på grund av arbetsbelastningar i resurspoolen SloSecSharedPool
available_physical_memory_mb Int Tillgängligt fysiskt minne i megabyte. Får inte vara ogiltig.
initial_job_object_memory_limit_mb Int Minnesgräns för jobbobjekt vid start av databasmotor i megabyte. Mer information om jobbobjekt finns i Resursstyrning. Nullbar.
current_job_object_memory_limit_mb Int Aktuell minnesgräns för jobbobjekt i megabyte. Nullbar.
process_memory_usage_mb Int Total processminnesanvändning i megabyte per instans. Får inte vara ogiltig.
non_sos_memory_usage_mb Int Icke-SOS-användning i megabyte, inklusive SOS-skapade trådar, trådar som skapats av icke-SOS-komponenter, inlästa DLL:er osv. Kan inte vara null.
committed_memory_target_mb Int SOS-målminne i megabyte. Får inte vara ogiltig.
committed_memory_mb Int SOS-incheckat minne i megabyte. Får inte vara ogiltig.
allocation_potential_memory_mb Int Minne som är tillgängligt för databasmotorinstansen för nya allokeringar i megabyte. Får inte vara ogiltig.
oom_factor tinyint Ett värde som ger ytterligare information som rör OOM-händelsen, endast för internt bruk. Får inte vara ogiltig.
oom_factor_desc nvarchar(30) Beskrivning av oom_factor. Endast för internt bruk. Får inte vara ogiltig.
0 - UNDEFINED
1 - ALLOCATION_POTENTIAL
2 - BLOCK_ALLOCATOR
3 - ESCAPE_TIMEOUT
4 - FAIL_FAST
5 - MEMORY_POOL
6 - EMERGENCY_ALLOCATOR
7 - VIRTUAL_ALLOC
8 - SIMULATED
9 - BUF_ALLOCATOR
10 - QUERY_MEM_QUEUE
11 - FRAGMENT
12 - INIT_DESCRIPTOR
13 - MEMORY_POOL_PRESSURE
14 - DESCRIPTOR_ALLOCATOR
15 - DESCRIPTOR_ALLOCATOR_ESCAPE
oom_resource_pools nvarchar(4000) Resurspooler som har slut på minne, inklusive minnesanvändningsstatistik för varje pool. Den här informationen tillhandahålls som ett JSON-värde. Nullbar.
top_memory_clerks nvarchar(4000) De främsta minneskontoren efter minnesförbrukning, inklusive minnesanvändningsstatistik för varje kontorist. Den här informationen tillhandahålls som ett JSON-värde. Nullbar.
top_resource_pools nvarchar(4000) De främsta resurspoolerna efter minnesförbrukning, inklusive minnesanvändningsstatistik för varje resurspool. Den här informationen tillhandahålls som ett JSON-värde. Nullbar.
possible_leaked_memory_clerks nvarchar(4000) Minnespersonal som har läckt minne. Baserat på heuristik och tillhandahålls med en begränsad grad av förtroende. Den här informationen tillhandahålls som ett JSON-värde. Nullbar.
possible_non_sos_leaked_memory_mb Int Läckte icke-SOS-minne i megabyte, om det finns några. Baserat på heuristik och tillhandahålls med en begränsad grad av förtroende. Nullbar.

Behörigheter

I Azure SQL Managed Instance kräver VIEW SERVER PERFORMANCE STATE behörighet.

I SQL Database Grundläggande, S0och S1 tjänstmål och för databaser i elastiska pooler, serveradministratör konto, Microsoft Entra-administratör konto eller medlemskap i ##MS_ServerPerformanceStateReader##serverrollen krävs. För alla andra SQL Database-tjänstmål krävs antingen VIEW DATABASE PERFORMANCE STATE behörighet för databasen eller medlemskap i ##MS_ServerPerformanceStateReader## serverrollen.

Anmärkningar

Varje rad i den här vyn representerar en OOM-händelse (out of memory) som har inträffat i databasmotorn. Alla OOM-händelser kan inte registreras. Äldre OOM-händelser kan försvinna från resultatuppsättningen när nyare OOM-händelser inträffar. Resultatuppsättningen sparas inte mellan omstarter av databasmotorn.

För närvarande är denna DMV synlig men stöds inte i SQL Server 2022 (16.x) och SQL Server 2025 (17.x) Preview.

summarized_oom_snapshot utökad händelse

Den summarized_oom_snapshot utökade händelsen är en del av händelsesessionen system_health för att förenkla identifieringen av minneshändelser. Varje summarized_oom_snapshot utökad händelse motsvarar en rad i sys.dm_os_out_of_memory_events. Mer information finns i Blogg: Ett nytt sätt att felsöka minnesfel i databasmotorn.

Exempel

A. Hämta alla tillgängliga OOM-händelser

I följande exempel returneras alla händelsedata ordnade efter den senaste tiden för databasmotorn som är värd för den anslutna databasen.

SELECT *
FROM sys.dm_os_out_of_memory_events
ORDER BY event_time DESC;

B. Hämta de främsta minneskontoren för varje OOM-händelse

I följande exempel returneras en delmängd av händelsedata och JSON-data expanderas i top_memory_clerks kolumnen. Varje rad i resultatuppsättningen representerar en högsta minnestjänsteman för en specifik OOM-händelse.

SELECT event_time,
       oom_cause_desc,
       oom_factor_desc,
       oom_resource_pools,
       top_resource_pools,
       clerk_type_name,
       clerk_page_allocated_mb,
       clerk_vm_committed_mb
FROM sys.dm_os_out_of_memory_events
CROSS APPLY OPENJSON(top_memory_clerks)
                    WITH (
                         clerk_type_name sysname '$.clerk_type_name',
                         clerk_page_allocated_mb bigint '$.page_allocated_mb',
                         clerk_vm_committed_mb bigint '$.vm_committed_mb'
                         )
ORDER BY event_time DESC, clerk_page_allocated_mb DESC;

C. Hämta de främsta resurspoolerna för varje OOM-händelse

I följande exempel returneras en delmängd av händelsedata och JSON-data expanderas i top_resource_pools kolumnen. Varje rad i resultatuppsättningen representerar en toppresurspool för en specifik OOM-händelse.

SELECT event_time,
       oom_cause_desc,
       oom_factor_desc,
       oom_resource_pools,
       top_memory_clerks,
       pool_name,
       pool_allocations_mb,
       pool_target_mb,
       pool_is_oom
FROM sys.dm_os_out_of_memory_events
CROSS APPLY OPENJSON(top_resource_pools)
                    WITH (
                         pool_name sysname '$.pool_name',
                         pool_allocations_mb bigint '$.allocations_mb',
                         pool_target_mb bigint '$.pool_target_mb',
                         pool_is_oom bit '$.is_oom'
                         )
ORDER BY event_time DESC, pool_allocations_mb DESC;