Triệu chứng
Khi bạn chạy phiên bản của Microsoft SQL Server 2017 bên trong bộ chứa Docker Linux, bạn có thể nhận được thông báo lỗi hết bộ nhớ.
Nguyên nhân
SQL Server trên Linux theo mặc định sử dụng giới hạn mềm là 80% tổng bộ nhớ vật lý khi cấu hình memory.memorylimitmb không được bật; Đối với vùng chứa Docker, SQL thường xem xét 80% tổng bộ nhớ máy chủ thay vì tự giới hạn ở 80% bộ nhớ được phân bổ cho vùng chứa docker. Giới hạn bộ nhớ không chính xác này cho phép SQL Server cố gắng tiêu thụ bộ nhớ nhiều hơn mức có sẵn cho vùng chứa và có thể là ứng cử viên để OOM Killer chấm dứt.
Lưu ý Khi bạn tạo hình ảnh Docker, bạn phải chỉ định –m để giới hạn bộ nhớ Docker. Tham khảo bài viết sau đây để biết thêm thông tin.
Giải pháp
Bản sửa lỗi cho sự cố này được bao gồm trong bản cập nhật sau đây dành cho SQL Server:
Bản cập nhật tích lũy 10 cho SQL Server 2017
Lưu ý Nếu cấu hình memory.memorylimitmb không được đặt cấu hình thì Bản sửa lỗi này sẽ cho phép SQL Server tự giới hạn ở giới hạn mềm là 80% bộ nhớ được phân bổ cho vùng chứa.
Giới thiệu về bản dựng SQL Server
Mỗi bản dựng mới cho SQL Server đều chứa tất cả bản sửa lỗi nóng và bản sửa lỗi bảo mật trong bản dựng trước đó. Chúng tôi khuyên bạn nên cài đặt bản dựng mới nhất cho phiên bản SQL Server của mình:
Bản dựng mới nhất cho SQL Server 2017
Trạng thái
Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong mục "áp dụng cho".
Tham khảo
Tìm hiểu về thuật ngữ chuẩn mà Microsoft sử dụng để mô tả các bản cập nhật phần mềm.