Gejala
Saat Anda menjalankan contoh Microsoft SQL Server 2017 di dalam wadah Docker Linux, Anda mungkin menerima pesan kesalahan memori habis.
Penyebab
SQL Server di Linux secara default menggunakan batas lembut 80% dari total memori fisik saat memori. konfigurasi memorylimitmb tidak diaktifkan; Untuk kontainer SQL Docker digunakan untuk mempertimbangkan 80% dari total memori host dan bukannya membatasi dirinya ke memori 80% dialokasikan ke kontainer Docker. Batas memori yang salah ini memungkinkan SQL Server untuk mencoba mengonsumsi memori lebih dari yang tersedia untuk kontainer dan bisa menjadi kandidat untuk penghentian dengan OOM Killer.
Catatan Saat Anda membuat gambar Docker Anda harus menentukan – m untuk membatasi memori Docker. Rujuk artikel berikut ini untuk informasi selengkapnya.
Pemecahan Masalah
Perbaikan untuk masalah ini disertakan dalam pembaruan berikut ini untuk SQL Server:
Pembaruan kumulatif 10 untuk SQL Server 2017
Catatan Jika konfigurasi memorylimitmb tidak dikonfigurasi, perbaikan ini memungkinkan SQL Server untuk membatasi dirinya pada batas lembut 80% memori yang dialokasikan ke wadah.
Tentang Build SQL Server
Setiap Build baru untuk SQL Server berisi semua perbaikan hotfix dan keamanan yang ada di Build sebelumnya. Kami menyarankan agar Anda menginstal Build terbaru untuk versi SQL Server Anda:
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".
Referensi
Pelajari tentang terminologi standar yang digunakan oleh Microsoft untuk menjelaskan pembaruan perangkat lunak.