Penggunaan memori yang aneh di Windows Server 2008 R2

20

Saya harap seseorang dapat membantu. Kami memiliki mesin Windows Server 2008 R2 dengan 16GB RAM yang terus mendapatkan semua memori yang tersedia dimakan oleh sesuatu. Tidak ada dalam Task Manager atau Resource Monitor yang mengungkapkan proses apa pun yang menggunakan memori di atas 300MB ... tetapi penggunaan memori pada server adalah 15,7GB.

https://i784.photobucket.com/albums/yy129/ThunderPeel2001/ram-usage.gif

Satu-satunya hal yang berjalan adalah SQL Server 2008 dan IIS7.5 (dengan ASP.Net).

Catatan: Penggunaan RAM setelah reboot dimulai rendah dan berfungsi dengan baik. Setelah sekitar satu minggu, kami terus mencari tahu dalam situasi ini.

Bagaimana saya bisa menemukan apa yang memakan semua ingatan kita? :(

Django Reinhardt
sumber
1
Bagaimana tepatnya Anda "Setelah membatasi penggunaan SQL Server RAM (min / maks) hingga 13GB, ini seharusnya tidak terjadi lagi."? Saya menjalankan mesin Win 2008 R2 dengan SQL 2008 R2 dan saya mengalami masalah yang sama.
Ini adalah pengaturan dalam SQL Server Studio. Semoga berhasil!
Django Reinhardt
1
@ user72232: msdn.microsoft.com/en-us/library/ms178067.aspx
Tim Schmelter

Jawaban:

15

Apakah ini server 64bit - apakah Anda memiliki halaman kunci di memori kebijakan lokal diaktifkan? SQL kemungkinan memakan sisa memori Anda. Jika Anda melihat penghitung perfmon Anda akan melihat alokasi memori

Berikut adalah artikel yang menjelaskannya secara mendalam

Anda juga dapat melihat penghitung dalam SQL

SELECT
    object_name
   ,Counter_name
   ,cntr_value
   ,ROUND(( cntr_value * 8192.0 ) / 1048576, 0) AS cntr_value_MB
FROM
    sys.dm_os_performance_counters
WHERE
    object_Name LIKE '%Buffer Manager%'
    AND RTRIM(counter_name) IN ( 'Free pages', 'Total pages',
                                 'Database pages' ) 
UNION SELECT
    object_name
   ,Counter_name
   ,cntr_value
   ,ROUND(( cntr_value / 1024 ), 0) AS cntr_value_MB
FROM
    sys.dm_os_performance_counters
WHERE
    counter_name IN ( 'Target Server Memory (KB)',
                      'Total Server Memory (KB)' )
CPU_BUSY
sumber
2
Ini menjelaskan semuanya. Penggunaan memori adalah "use all available" (mis. 2000TB) dan dengan halaman-halaman terkunci dalam RAM, maka tidak semua memiliki akses ke sana ketika sedang digunakan. Setelah membatasi penggunaan SQL Server RAM (min / maks) hingga 13GB, ini seharusnya tidak terjadi lagi. Saya sekarang memiliki beberapa alat yang tersedia untuk mengawasi setiap perubahan juga. Terima kasih atas bantuan Anda!
Django Reinhardt
>> Saya sekarang memiliki beberapa alat yang tersedia untuk mengawasi setiap perubahan, juga - Alat apa yang Anda gunakan?
David Christiansen
6

Tes cepat: restart SQL Server.
Tes cepat lain: restart IIS.

Anda akan tahu pasti apakah salah satu dari mereka adalah pelakunya, atau jika Anda harus mencari di tempat lain.

Massimo
sumber
Sepertinya SQL adalah pelakunya!
Django Reinhardt
3

Mungkin membantu menggunakan RamMap untuk melihat ke mana memori Anda pergi.

Sergei
sumber
1

Apakah Anda benar-benar mengalami masalah terkait memori?

Apakah penggunaan memori menjadi lebih tinggi dari memori terpasang yang sebenarnya, atau hanya mengisi dan tetap di sana?

Jika memori hanya mengisi tetapi Anda tidak mengalami masalah, maka itu hanya melakukan tugasnya dengan cache; memori akan secara otomatis dihapus jika dan ketika Anda benar - benar membutuhkannya.

Jika penggunaan memori melampaui batas fisik dan server terhenti, maka Anda mengalami kebocoran kehabisan memori dan harus melakukan debug.

Beberapa artikel menarik tentang topik "cache":

http://blogs.msdn.com/ntdebugging/archive/2007/11/27/too-much-cache.aspx
http://blogs.msdn.com/ntdebugging/archive/2007/10/10/the-memory -shell-game.aspx
http://blogs.msdn.com/ntdebugging/archive/2009/02/06/microsoft-windows-dynamic-cache-service.aspx

Massimo
sumber
Yah kami tidak dapat menginstal pembaruan Windows Kritis tanpa mereset server karena itu terus kehabisan RAM. Cukup konyol. Apa pun yang menggunakannya, tidak mau mengembalikannya.
Django Reinhardt
0

Sudahkah Anda memeriksa Perfmon (khususnya penghitung SQL), seperti yang disarankan oleh seseorang di utas Anda yang lain?

mfinni
sumber
1
Yap, tetapi "memeriksa Perfmon" lebih rumit daripada kedengarannya.
Django Reinhardt
0

Hal pertama adalah, seperti yang telah dikatakan sebelumnya, menambalnya dan melihat apakah itu menyelesaikan masalah.

Kedua, jika itu tidak berhasil, gunakan Process Explorer untuk melihat lebih baik penggunaan memori Anda. Buka menu Lihat, lalu Pilih Kolom, Proses Memori dan periksa opsi Private Bytes, Virtual Size dan Working Set Size. Lihat apakah itu menunjukkan apa yang harus disalahkan di sini.

Pendekatan drastis kemudian akan mencoba menghentikan layanan. IIS misalnya dapat menjadi total babi memori jika Anda memiliki kolam aplikasi dan taman web yang tidak terkonfigurasi (terlalu banyak dari mereka) sehingga itu adalah kandidat.

Semoga berhasil!

Maximus Minimus
sumber