Bộ nhớ máy chủ bị đánh cắp DB Engine quá cao


8

Tôi gặp lỗi từ System Center Operations Manager (SCOM).

Làm thế nào để giải quyết lỗi này?

Bộ nhớ máy chủ bị đánh cắp động cơ SQL DB 2012 quá cao.

Tôi chạy truy vấn và nhận được quầy này:

╔═══════════════════════════════╦═════════════╗
║ Stolen Server Memory (MB)     ║ 7354.773437 ║
║ Lock Memory (MB)              ║ 106.195312  ║
║ Free Memory (MB)              ║ 64.632812   ║
║ Connection Memory (MB)        ║ 24.203125   ║
║ Log Pool Memory (MB)          ║ 14.085937   ║
║ Optimizer Memory (MB)         ║ 2.351562    ║
║ Granted Workspace Memory (MB) ║ 1.296875    ║
║ Cursor memory usage           ║ 0.000000    ║
║ Cursor memory usage           ║ 0.000000    ║
║ Cursor memory usage           ║ 0.000000    ║
╚═══════════════════════════════╩═════════════╝

Câu trả lời:


10

Đã bao nhiêu lần bạn nhìn thấy những tin nhắn như vậy? Nếu nó là một hoặc hai lần nó có thể được bỏ qua.

'Bộ nhớ bị đánh cắp' như được mô tả trong bài viết hỗ trợ cũ nàyCách sử dụng DBCC MEMORYSTATUS là:

Bộ nhớ bị đánh cắp mô tả các bộ đệm được sử dụng để sắp xếp hoặc cho các hoạt động băm (bộ nhớ vùng làm việc truy vấn) hoặc cho các bộ đệm đang được sử dụng làm kho lưu trữ bộ nhớ chung để phân bổ để lưu trữ cấu trúc dữ liệu nội bộ như khóa, ngữ cảnh giao dịch và thông tin kết nối . Quá trình lười biếng không được phép xóa bộ đệm bị đánh cắp ra khỏi vùng đệm.

Bộ nhớ thường được lấy từ Buffer Pool. Nếu bạn chạy DBCC MEMORYSTATUSvà đầu ra hiển thị cho bạn Trang bị đánh cắp cao , điều này có nghĩa là một số quy trình đang đánh cắp bộ nhớ từ nhóm bộ đệm nhiều hơn những gì cần thiết và bạn cần tìm quy trình đó.

Rất có khả năng có một số hoạt động đang chạy đã thực hiện một hoạt động sắp xếp khổng lồ và đồng thời SQL Server đã tiêu tốn rất nhiều bộ nhớ do đó dẫn đến thông báo này. Trừ khi bạn phải đối mặt với một số vấn đề OOM, thông báo này sẽ được coi là một cảnh báo .


-1

Nhận thấy điều này từ tìm kiếm của Google khi chúng tôi gặp phải vấn đề tương tự (Bộ nhớ bị đánh cắp là ~ 50% tổng bộ nhớ) nhưng chúng tôi không thể

Btw, tôi tìm thấy mã dưới đây

select type, name, sum((pages_kb*1024)/8192) as stolen_pages
from sys.dm_os_memory_clerks
where pages_kb > 0
group by type, name
order by stolen_pages desc;

type    name    stolen_pages
MEMORYCLERK_SQLBUFFERPOOL   Default 1710360

Tôi đã sửa đổi nó nhiều hơn để hiển thị% bị đánh cắp dưới dạng Tổng bộ nhớ

SELECT Now = GETDATE()
    ,StolenMemory = (
        SELECT cntr_value
        FROM sys.dm_os_performance_counters
        WHERE [counter_name] IN ('Stolen Server Memory (KB)')
        )
    ,StolenMemoryPercent = 100.0 * (
        SELECT cntr_value
        FROM sys.dm_os_performance_counters
        WHERE [counter_name] IN ('Stolen Server Memory (KB)')
        ) / (
        SELECT cntr_value
        FROM sys.dm_os_performance_counters
        WHERE [counter_name] IN ('Total Server Memory (KB)')
        )
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.