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.
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.