KB4347055 - PERBAIKI: Kesalahan memori kehabisan saat Anda menjalankan SQL Server 2017 dalam kontainer Linux Docker

Berlaku Untuk
SQL Server 2017 Developer SQL Server 2017 Enterprise SQL Server 2017 Enterprise Core

Gejala

Ketika menjalankan instans Microsoft SQL Server 2017 di dalam kontainer Linux Docker, Anda mungkin menerima pesan kesalahan di luar memori.

Penyebab

SQL Server di Linux secara default menggunakan batas lunak 80% dari total memori fisik ketika konfigurasi memory.memorylimitmb tidak diaktifkan; Untuk kontainer Docker, SQL dulu mempertimbangkan 80% dari total memori host alih-alih membatasi dirinya hingga 80% memori yang dialokasikan ke kontainer buruh pelabuhan. Batas memori yang salah ini memungkinkan SQL Server untuk mencoba menghabiskan memori lebih dari yang tersedia untuk kontainer dan dapat menjadi kandidat untuk penghentian oleh OOM Killer.

catatan Saat membuat gambar Docker, Anda harus menentukan –m untuk membatasi memori Docker. Lihat artikel berikut ini untuk informasi selengkapnya.

Buat Docker

Resolusi

Perbaikan untuk masalah ini disertakan dalam pembaruan berikut untuk SQL Server:

Pembaruan Kumulatif 10 untuk SQL Server 2017

catatan Jika konfigurasi memory.memorylimitmb tidak dikonfigurasi maka Perbaikan ini memungkinkan SQL Server untuk membatasi dirinya sendiri ke batas lunak 80% dari memori yang dialokasikan ke kontainer.

Tentang build SQL Server

Setiap build baru untuk SQL Server berisi semua hotfix dan perbaikan keamanan yang ada di build sebelumnya. Kami menyarankan Anda menginstal build terbaru untuk versi SQL Server Anda:

Build terbaru untuk SQL Server 2017

Status

Microsoft telah mengonfirmasi bahwa ini adalah masalah dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".

Referensi

Pelajari tentang terminologi standar yang digunakan Microsoft untuk menjelaskan pembaruan perangkat lunak.