Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Khắc phục: Trên bộ nhớ lỗi khi không gian địa chỉ ảo của quá trình SQL Server rất thiếu bộ nhớ

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 3074434
Chú ý
Sau khi bạn áp dụng bản cập nhật này, bạn phải thêm dấu kiểm vết cờ - T8075 như một tham số khởi động để cho phép thay đổi này.
Triệu chứng
Khi bạn chạy truy vấn trong phiên bản 64-bit của Microsoft SQL Server 2014 hoặc Microsoft SQL Server 2012, bạn nhận được thông báo lỗi hết bộ nhớ giống như sau trong Nhật ký lỗi SQL Server:

Không thể phân bổ trang: FAIL_PAGE_ALLOCATION 513

Truy vấn mất nhiều thời gian để hoàn tất việc thực thi và gặp SOS_MEMORY_TOPLEVELBLOCKALLOCATOR chờ đợi.

Khi bạn kiểm tra các điểm thông tin sau, bạn sẽ thấy rằng có không gian địa chỉ ảo có rất thấp:

  • DBCC MEMORYSTATUS - trình/hệ thống tính phần - bộ nhớ ảo
  • DMV: sys.dm_os_process_memory - cột virtual_address_space_available_kb
Các giá trị Bắt đầu khoảng 8 terabyte (TB) trên một x 64 xử lý và tiếp tục đến lên đến một vài Gigabyte (GB).

Khi bạn đang ở giai đoạn mà địa chỉ ảo có dung lượng byte là rất thấp, truy vấn đang thực hiện cấp phát bộ nhớ cũng có thể gặp phải một loại chờ CMEMTHREAD.

Điểm dữ liệu sau sẽ tiếp tục tăng theo thời gian:
  • DMV: sys.dm_os_process_memory và sys.dm_os_memory_nodes - cột virtual_address_space_reserved_kb
  • DBCC MEMORYSTATUS - quản lý bộ nhớ phần - VM dành riêng

Các giá trị thông thường sẽ tăng bội giá trị "hệ phục vụ tối đa bộ nhớ" đến gần 8 TB.
Nguyên nhân
Khi quá trình SQL Server đã đạt tới trạm đậu mà tổng bộ nhớ máy chủ = bộ nhớ máy chủ mục tiêu = hệ phục vụ tối đa bộ nhớ, có chính sách quản lý bộ nhớ SQL Server để phân bổ mới yêu cầu nhiều 8 KB trang thành công tạm thời. Lặp lại giao mẫu trong những điều kiện có thể gây ra phân mảnh khối bộ nhớ và tiêu thụ không gian địa chỉ ảo. Nếu quá trình này sẽ lặp lại nhiều lần, không gian địa chỉ ảo SQL Server sẽ được hết, và bạn sẽ thấy các dấu kiểm hiệu được đề cập trước đó.
Giải pháp

Thông tin về cập nhật nóng

Để giải quyết vấn đề này, cài đặt chuyên biệt hotfix từ Khắc phục: Lỗi khi thủ tục dịch sẵn của bạn gọi một quy trình được lưu trữ trên các máy chủ được liên kết trong SQL Server 2014.

Điều kiện tiên quyết

Bạn phải Cập Nhật tích luỹ 3 SQL Server 2014 gói bản ghi dịch vụ 1 cài đặt chuyên biệt để áp dụng hotfix này.

Thông tin Cập Nhật tích luỹ

Số lần đầu tiên được khắc phục trong bản Cập Nhật tích luỹ sau của SQL Server.

Giới thiệu: cài đặt chuyên biệt bản Cập Nhật tích luỹ mới nhất cho SQL Server
Mỗi bản Cập Nhật tích luỹ mới cho SQL Server có chứa tất cả các hotfix và tất cả các bản sửa lỗi bảo mật mà được đính kèm với bản Cập Nhật tích luỹ trước đó. Chúng tôi khuyên bạn nên tải xuống và cài đặt chuyên biệt các bản Cập Nhật tích luỹ mới nhất cho SQL Server:


Hotfix này ngăn hết bộ nhớ và giảm liên tục không gian địa chỉ ảo có, bạn có thể gặp phải.
Tình trạng
Microsoft đã xác nhận rằng đây là sự cố trong sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".
Thông tin thêm
  • Windows 2012 R2 cho phép không gian địa chỉ ảo phát triển lớn 128 TB. Do đó, bạn có thể không thấy vấn đề này trong môi trường Windows 2012 R2. Để biết thêm thông tin, hãy xem chủ đề sau trong Trung tâm nhà phát triển Windows:

    Bộ nhớ giới hạn đối với Windows và Windows Server Phiên bản
  • Nếu bạn thấy liên tục phát triển trong không gian địa chỉ ảo ngay cả sau khi bạn áp dụng bản vá, bạn có thể xác định truy vấn hoặc hoạt động nào yêu cầu lớn khối lượng bộ nhớ bằng cách sử dụng các Page_allocated mở rộng sự kiện. Tập lệnh mẫu trông như thế này:

    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
    Thông thường, đây là đồng gửi lưu Nhật ký và hoạt động bảo trì chỉ xảy ra thường xuyên.

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 3074434 - Xem lại Lần cuối: 01/27/2016 03:35:00 - Bản sửa đổi: 8.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Service Pack 1

  • kbqfe kbsurveynew kbexpertiseadvanced kbfix kbmt KB3074434 KbMtvi
Phản hồi