Kami memiliki mesin SQL Server 2008 R2 khusus yang mengalami beberapa masalah memori aneh .. Mesin itu sendiri memiliki banyak sumber daya termasuk dua prosesor quad-core, 16 GB RAM dan 64bit Windows Server 2008 R2 Enterprise (ini adalah Dell PowerEdge 2950) .
Masalah aneh adalah bahwa sistem ini melaporkan 82% dari memori yang digunakan tetapi sqlservr.exe hanya melaporkan 155mb yang digunakan. Alasan yang saya duga SQL Server adalah masalahnya adalah karena jika saya me-restart proses sqlservr.exe konsumsi memori kembali normal untuk jangka waktu tertentu.
Adakah yang punya ide tentang bagaimana saya bisa mulai melacak masalah ini?
Terima kasih, Jason
sql-server-2008-r2
memory
process
typefragger
sumber
sumber
Jawaban:
Anda tidak akan mendapatkan gambaran yang benar tentang penggunaan memori dari Task Manager jika akun yang menjalankan layanan memiliki halaman kunci dalam hak istimewa memori (edit: sesuai komentar / tautan Mark Rasmussen). Untuk menentukan berapa banyak memori yang digunakan, Anda dapat melihat:
Saya tidak ingat apakah ada DMV atau kombinasi yang akan memberi Anda alokasi memori total tetapi yang berikut akan menunjukkan sebagian besar.
Yang kedua adalah yang paling menarik biasanya, alokasi buffer pool oleh database. Di sinilah bagian singa akan digunakan dan dapat berguna untuk memahami yang mana dari basis data Anda yang merupakan konsumen terbesar.
sumber
Ada artikel terbaru dari Brent Ozar kita sendiri yang menangani kasus ini, ketika Task Manager tidak menunjukkan dengan benar memori yang dimakan oleh SQLServer dan layanan tambahannya. Anda dapat menemukannya di sini: Panduan Sysadmin untuk Memori Microsoft SQL Server .
Kutipan: " Mengapa SQLServer.exe Tidak Menggunakan Banyak Memori?
Ketika Anda remote desktop ke server dan melihat Task Manager, Penggunaan Mem sqlservr.exe selalu tampak aneh. Itu bukan kesalahan SQL Server. Task Manager adalah pembohong yang kotor dan kotor. (Saya tahu, kedengarannya seperti orang SQL itu yang menyalahkan, tetapi bersabarlah sebentar.) Pada kotak 64-bit, angka ini agak lebih akurat, tetapi pada kotak 32-bit, itu hanya benar-benar tidak masuk akal . Untuk benar-benar mendapatkan gambaran yang akurat tentang berapa banyak memori yang digunakan SQL Server, Anda memerlukan alat seperti Process Explorer, dan Anda perlu mengidentifikasi semua proses SQL Server. Di server saya tunjukkan di kanan, ada dua contoh SQL Server (ditunjukkan oleh sqlservr.exe), ditambah SQL Agent, SQL Browser, dan alat cadangan SQL Server. Sudah biasa juga melihat Layanan Analisis SQL Server, Layanan Integrasi, dan Layanan Pelaporan juga berjalan di server yang sama - yang semuanya menghabiskan memori.
Jadi berapa banyak memori yang digunakan SQL? Saya akan membuat ini mudah bagi Anda. SQL Server menggunakan semua memori. Titik."
Jadi saya akan menyarankan Anda untuk mencoba permintaan Markus dan menggunakan alat yang lebih baik untuk laporan memori. Atau hanya percaya Perfmon untuk melaporkan memori, bukan Pengelola Tugas.
sumber
Jumlah memori yang digunakan oleh SQL, seperti yang ditunjukkan di task manager, sebagian besar akan menjadi pengaturan max-memory. Ini adalah cara kerja pengaturan min / max:
Ketika SQL server mulai, itu mulai mengambil memori hingga pengaturan min-memory. Ketika kebutuhan SQL Anda meningkat, SQL akan mulai menggunakan lebih banyak memori hingga pengaturan max-memory. Memori kemudian tetap pada titik ini (maks) bahkan ketika penggunaan SQL turun. Ini memberi kesan SQL melakukan tugas besar dan menghabiskan banyak memori. Pada kenyataannya, memori ini disediakan oleh SQL.
Ketika ada tekanan memori non-SQL di server, SQL akan melepaskan memori ke titik pengaturan min-memori. Ini adalah bagaimana pengaturan memori digunakan. Anda bisa menggunakan skrip Mark untuk melihat bagaimana SQL menggunakan memori ini.
sumber