Saya punya satu node SQL2012 SP4 yang menjalankan beberapa basis data.
Server memiliki 20GB memori yang tersedia, 14GB dialokasikan untuk SQL (tidak ada yang berjalan pada kotak).
Setiap beberapa menit SQL membuang seluruh cache buffer. Harapan hidup halaman mencapai nol, deskriptor cache cache menunjukkan bahwa tidak ada apa-apa di cache.
Saya telah melihat notifikasi monitor sumber daya dan notifikasi memantul dari tinggi / stabil / rendah setiap beberapa milidetik:
RESOURCE_MEMPHYSICAL_HIGH RESOURCE_MEM_STEADY RESOURCE_MEMPHYSICAL_LOW
Dengan cap waktu yang terpisah beberapa milidetik. PLE pada dasarnya adalah pola gigi gergaji.
Saya pernah melihat ini terjadi sebelumnya dengan SQL2012 SP1 dan pertanyaan ini:
SQL Server 2012 Halaman Gratis di Buffer Cache Tidak Digunakan
Tampaknya menjadi masalah yang serupa, meskipun saya sudah memperbarui ke SP4.
Saya sudah mencoba menyalakan LPIM untuk akun layanan dan saya sudah mencoba mengacaukan pengaturan memori maks. Menurunkan memori maks tampaknya telah menyebabkan cache buffer kosong lebih sering.
Ada ide tentang apa yang harus diperiksa selanjutnya?
Beban kerja server sebenarnya tidak ada apa-apanya (saya menggulir daftar item dalam sistem ERP dan mencapai sekitar 40-50MB sebelum cache turun lagi).
Sangat menarik karena saya memutakhirkan dari SP1 untuk mencoba dan memperbaikinya - cache di sana mencapai sekitar 500MB. Sejak itu saya menjatuhkan pengaturan memori maks ke 14GB yang tampaknya membuatnya semakin buruk.
Saya bertanya-tanya apakah Windows panik dan melempar pemberitahuan yang salah untuk tekanan memori pada SQL - ini berarti bahwa server dengan memori maks yang disetel tidak terikat tampaknya berjalan dengan baik, tetapi tidak pernah mengisi cache lebih dari beberapa ratus MB - tetapi sekarang nyaris tidak sampai 50 ...
Info Lebih Lanjut: untuk yang bertanya
Jumlah inti: 4
Ukuran Basis Data: 80GB
Log kesalahan menunjukkan: A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: 0 seconds. Working set (KB): 247928, committed (KB): 495656, memory utilization: 50%.
Hasil menjalankan skrip dari tautan ini: https://www.sqlskills.com/blogs/jonathan/identifying-external-memory-pressure-with-dm_os_ring_buffers-and-ring_buffer_resource_monitor/
Tidak yakin bagaimana menafsirkan ini - sepertinya ada tekanan memori internal dan eksternal pada berbagai waktu ..
Info lebih lanjut:
Ini adalah tamu Hyper-V yang duduk di host dengan 96GB ram total yang sekitar setengahnya dialokasikan untuk para tamu.
Gejala-gejalanya mirip dengan ini:
SQL Server 2012 x64 - tidak dapat mengalokasikan lebih dari 50% RAM dengan aman
Namun, ketika saya mengalokasikan 14GB untuk SQL gejala langsung muncul (hampir 3GB dari memori server dilakukan)
Tadi malam saya menabrak memori tamu menjadi 32GB dan masalahnya hilang tetapi saya melihat hanya 14GB komit dari total memori server (dan bisnis yang menjalankan DB sibuk pagi ini dan ini adalah saat mereka biasanya memiliki masalah kinerja).
Sekitar 8-9GB data dalam cache saat ini, tampaknya stabil.
Tampaknya memberi kesan bahwa 20GB sudah cukup untuk beban kerja pada kotak ini. Saya senang meninggalkannya dengan 32GB untuk saat ini tetapi saya benar-benar ingin membahas hal ini sehingga saya dapat mengkonfigurasi VMs / SQL dengan lebih baik.
Saya akan terus menggali dan memperbarui jika saya menemukan jawabannya!
Info lebih lanjut:
Saya tidak me-restart SQL setelah menyalakan LPIM (tidak menyadari bahwa itu persyaratan) tapi saya membiarkan pengaturan ini dan restart untuk meningkatkan memori jadi sekarang saya tidak yakin apakah peningkatan memori atau LPIM telah meringankan masalah.
Akan melompat pada malam ini ketika server menganggur dan memeriksa tampilannya 20GB lagi.
Bahkan Lebih Jauh Lebih Banyak Info Lebih Lanjut:
Saat ini server berdetak ok dengan alokasi 32GB dan kami tidak melihat masalah sejak itu. Jika ini muncul lagi saya akan kembali ke pertanyaan ini dan terus menggali.
Saat ini masih menjadi misteri tetapi dugaan saya adalah bahwa saya hanya menutupi masalah saat ini.
sumber
Jawaban:
Meskipun Anda sendiri yang tampaknya telah menyelesaikan masalah, berikut ini adalah ringkasan dari informasi yang relevan seputar solusi.
Opsi Konfigurasi Server Memori Server
Microsoft menulis di artikel mereka Opsi Konfigurasi Server Memori Server (Microsoft | SQL Documents) untuk bagian Mengatur opsi memori secara manual
( penekanan milikku)
Bagian tentang Halaman Kunci dalam Memori (dokumen yang sama) memiliki paragraf yang setara dan setara yang berbunyi:
( penekanan milikku)
Bagian LPIM selanjutnya menjelaskan bahwa:
( penekanan milikku)
... dan dalam komentar penting bahwa:
( penekanan milikku)
Larutan
Berdasarkan temuan di atas dan pengamatan Anda, solusi untuk masalah Anda adalah mengonfigurasi pengaturan berikut:
min_server_memory
(5-10 GB?) Berdasarkan komentar Anda:... dan rekomendasi Microsoft untuk pengaturan a
min_server_memory
.max_server_memory
(20-32 GB) berdasarkan pengamatan Anda:... dan rekomendasi Microsoft untuk pengaturan a
max_server_memory
.Berdasarkan entri ERRORLOG contoh SQL Server Anda yang Anda sebutkan dan referensi Microsoft dalam artikel.
Sebelum Anda Terus ...
(Salah satu) manfaat dari memiliki lingkungan tervirtualisasi adalah bahwa sumber daya dapat / harus dibagi, dan bahkan mungkin berlebihan. Namun, mengaktifkan Kunci Halaman Dalam Memori (LPIM) dapat berdampak negatif pada lingkungan Hyper-V Anda, jika perangkat keras Anda menampung banyak kejadian. Komitmen berlebihan pada RAM dapat menghabiskan banyak hal.
Sebelum Anda mempertimbangkan untuk mengaktifkan semua tuas, mulailah dengan pengaturan 1. dan 2. dan jika fine tuning pengaturan memori ini tidak berfungsi, maka pertimbangkan untuk mengaktifkan LPIM jika Anda memiliki cukup perangkat keras .
sumber