MSSQLSERVER_17890

Berlaku untuk:SQL Server

Detail

Atribut Nilai
Nama Produk SQL Server
ID Peristiwa 17890
Sumber Kejadian MSSQLSERVER
Komponen SQLEngine
Nama Simbolis SRV_WS_TRIMMED
Teks Pesan Bagian penting dari memori proses SQL Server telah di-page out. Hal ini dapat mengakibatkan penurunan performa. Durasi: %d detik. Set kerja (KB): %I64d, berkomitmen (KB): %I64d, pemanfaatan memori: %d%%.

Penjelasan

Anda mungkin menemukan pesan kesalahan berikut di log kesalahan SQL Server atau log peristiwa Aplikasi Windows.

Bagian penting dari memori proses SQL Server telah di-page out. Hal ini dapat mengakibatkan penurunan performa. Durasi: 0 detik. Set kerja (KB): 3383250, penerapan (KB): 9112480, pemanfaatan memori: 37%.

Anda mungkin juga melihat penurunan performa mendadak dengan eksekusi kueri dan semua operasi lainnya di SQL Server.

Penyebab

SQL Server memantau berbagai informasi terkait memori tentang proses SQL Server. Dalam hal ini, telah mendeteksi bahwa set proses yang berfungsi kurang dari 50% dari memori proses yang diterapkan. Akibatnya peringatan ini dicetak. Penyebab normal peringatan ini adalah:

  • Halaman sistem operasi mengeluarkan sebagian besar memori yang diterapkan SQL Server ke file halaman.
  • Ini bisa disebabkan oleh peningkatan permintaan memori yang tiba-tiba dari aplikasi lain atau kebutuhan sistem operasi.
  • Ini juga dapat terjadi ketika driver perangkat tertentu meminta alokasi memori yang bersebelahan untuk kebutuhan mereka.

Tindakan pengguna

Anda dapat mencegah sistem operasi Windows melakukan paging out memori kumpulan buffer dari proses SQL Server dengan mengunci memori yang dialokasikan untuk kumpulan buffer dalam memori fisik. Anda mengunci memori dengan menetapkan halaman Kunci di pengguna memori langsung ke akun pengguna yang digunakan sebagai akun startup layanan SQL Server. Tetapi sebelum Anda menerapkan solusi ini, tinjau bagian Apa yang menyebabkan memori SQL Server di-page-out dan Pertimbangan penting sebelum Anda menetapkan pengguna "Kunci halaman dalam memori" tepat untuk instans SQL Server

Catatan

Menggunakan Halaman Kunci dalam Memori memastikan bahwa memori yang dikelola oleh SQL Server tidak di-page out. Namun, tumpukan utas, EXE dan gambar DLL apa pun, memori tumpukan, memori CLR masih dapat di-page out oleh OS.

Dimulai dengan Pembaruan Kumulatif SQL Server 2008 SP1 2, baik edisi SQL Server Standard dan Enterprise dapat menggunakan halaman Kunci di pengguna memori dengan benar. Untuk informasi selengkapnya tentang dukungan untuk halaman terkunci, lihat KB970070 - Dukungan untuk Halaman Terkunci pada sistem SQL Server Standard Edition (64-bit).

Untuk menetapkan halaman Kunci di kanan pengguna memori, ikuti langkah-langkah berikut:

  1. Klik Mulai, klik Jalankan, ketik gpedit.msc, lalu klik OK.
  2. Catatan kotak dialog Kebijakan Grup muncul.
  3. Perluas Konfigurasi Komputer, lalu perluas Pengaturan Windows.
  4. Perluas Pengaturan Keamanan, lalu perluas Kebijakan Lokal.
  5. Klik Penetapan Hak Pengguna, lalu klik dua kali Kunci halaman dalam memori.
  6. Dalam kotak dialog Pengaturan Kebijakan Keamanan Lokal, klik Tambahkan Pengguna atau Grup.
  7. Dalam kotak dialog Pilih Pengguna atau Grup , tambahkan akun yang memiliki izin untuk menjalankan file Sqlservr.exe, lalu klik OK.
  8. Tutup kotak dialog Kebijakan Grup.
  9. Mulai ulang layanan SQL Server.

Setelah Anda menetapkan halaman Kunci di pengguna memori dengan benar dan Anda memulai ulang layanan SQL Server, sistem operasi Windows tidak lagi mem-halaman memori kumpulan buffer dalam proses SQL Server. Namun, sistem operasi Windows masih dapat mem-page out memori kumpulan nonbuffer dalam proses SQL Server.

Anda dapat memvalidasi bahwa hak pengguna digunakan oleh instans SQL Server dengan memastikan bahwa pesan berikut ditulis dalam Log Kesalahan SQL Server saat startup: "Menggunakan halaman terkunci untuk kumpulan buffer"

Pesan ini hanya berlaku untuk SQL Server. Untuk informasi selengkapnya tentang pesan ini di ERRORLOG, kunjungi hal berikut: Apakah saya harus menetapkan halaman Kunci untuk hak istimewa Memori di Sistem Lokal

Ketika halaman sistem operasi Windows keluar dari memori kumpulan nonbuffer, Anda mungkin masih mengalami masalah performa. Namun, pesan kesalahan yang disebutkan di bagian "Penjelasan" tidak dicatat di log kesalahan SQL Server.

Apa yang menyebabkan memori SQL Server di-page out

Ada tiga kategori masalah luas yang dapat menyebabkan masalah ini:

  • Masalah Terkait Aplikasi: Semua aplikasi bersama-sama telah menghabiskan memori fisik yang tersedia dan OS harus membebaskan beberapa memori untuk permintaan aplikasi baru untuk sumber daya. Biasanya, pendekatan di sini adalah menemukan aplikasi apa yang menghabiskan memori dan mengambil langkah-langkah yang diperlukan untuk menyeimbangkan memori di antara mereka tanpa menyebabkan kelelahan RAM.
  • Masalah Driver Perangkat: Driver Perangkat dapat menyebabkan penomoran set kerja dari semua proses jika driver salah memanggil fungsi alokasi memori.
  • Masalah Sistem Operasi

Di bawah ini, Anda dapat menemukan informasi tentang masing-masing kategori ini

  • Masalah Terkait Aplikasi: Aplikasi bersama-sama dapat menggunakan semua RAM pada sistem. Jika permintaan baru untuk memori dibuat, OS mencoba untuk memenuhinya dan jika tidak ada memori gratis, itu akan memangkas kumpulan aplikasi yang berjalan untuk memenuhi permintaan memori. Dalam kasus seperti itu, Anda dapat mengamati bahwa set kerja untuk sebagian besar jika tidak semua aplikasi turun secara signifikan. Untuk mengamati hal ini, kumpulkan penghitung Monitor Performa berikut untuk semua aplikasi pada sistem:

    • Objek performa: Proses
    • Penghitung: Set Kerja

    Selain itu, pantau penghitung berikut untuk menghubungkan berapa banyak memori fisik yang tersedia pada sistem.

    • Objek performa: Memori
    • Penghitung: Memori yang Tersedia (MB)

    Perilaku umum yang dapat Anda amati adalah pengurangan Memori yang tersedia mendekati 0 MB sementara pada saat yang sama penurunan tiba-tiba penghitung Set Kerja untuk sebagian besar (semua) proses pada sistem. Jika Anda mengamati perilaku tersebut, Anda mungkin perlu mengambil langkah-langkah untuk mengurangi penggunaan memori pada sistem, yang mencakup misalnya mengurangi Memori Server Maks untuk SQL Server.

    Aplikasi juga dapat menggunakan cache sistem terlalu banyak, dan dapat menyebabkan pertumbuhan besar cache sistem. Untuk menanggapi pertumbuhan cache sistem, sistem memunculkan kumpulan kerja proses SQL Server atau aplikasi lain. Jika Anda mengalami masalah ini, Anda dapat menggunakan beberapa fungsi manajemen memori dalam aplikasi. Fungsi-fungsi ini mengontrol ruang cache sistem yang dapat digunakan operasi I/O file dalam aplikasi. Misalnya, Anda dapat menggunakan fungsi SetSystemFileCacheSize dan fungsi GetSystemFileCacheSize untuk mengontrol ruang cache sistem yang dapat digunakan operasi I/O file.

    Anda dapat menggunakan objek performa Memori untuk melihat nilai berbagai penghitung dalam objek ini untuk menentukan apakah set kerja cache sistem menggunakan terlalu banyak memori. Misalnya, Anda dapat melihat penghitung Byte Cache dan Byte Penduduk Cache Sistem. Untuk informasi selengkapnya tentang topik ini, lihat:

    Anda dapat mengunduh dan menyebarkan "Microsoft Windows Dynamic Cache Service" untuk mengontrol memori yang digunakan oleh cache sistem.

  • Masalah Driver Perangkat: Jika driver perangkat menggunakan MmAllocateContiguousMemory fungsi , dan jika menetapkan nilai parameter HighestAcceptableAddress menjadi kurang dari 4 gigabyte (GB), sistem operasi Windows dapat memunculkan serangkaian proses yang berfungsi pada sistem termasuk proses SQL Server. Untuk mengatasi masalah ini, hubungi vendor driver perangkat untuk pembaruan driver.

    Ketika driver perangkat mencoba mengalokasikan memori, sistem operasi Windows dapat menampilkan kumpulan aplikasi lain yang berfungsi. Perbaikan Windows ini memungkinkan Anda menggunakan pelacakan peristiwa untuk menemukan pengandar perangkat yang menyebabkan masalah. Untuk menemukan informasi selengkapnya tentang driver tertentu yang menyebabkan perilaku pemangkasan set kerja, lihat Mengidentifikasi Driver yang Mengalokasikan Memori Yang Bersebelahan.

  • Masalah Sistem Operasi: Untuk mengatasi masalah yang diketahui yang menyebabkan sistem operasi Windows memunculkan kumpulan kerja proses SQL Server, terapkan perbaikan yang dijelaskan dalam artikel Pangkalan Pengetahuan Microsoft berikut ini.

    Catatan

    Perbaikan bersifat kumulatif. Versi perbaikan yang lebih baru berisi versi perbaikan yang lebih lama.

Pertimbangan penting sebelum Anda menetapkan hak pengguna "Kunci halaman dalam memori"

Anda harus membuat pertimbangan tambahan sebelum menetapkan halaman Kunci di kanan pengguna memori. Jika Anda menetapkan pengguna ini tepat pada sistem yang salah dikonfigurasi, sistem mungkin menjadi tidak stabil atau mengalami penurunan performa seluruh sistem. Selain itu, ID peristiwa 333 dapat dicatat di log peristiwa.

Jika Anda menghubungi Layanan Dukungan Pelanggan Microsoft (CSS) untuk masalah ini, teknisi CSS dapat meminta Anda untuk mencabut hak pengguna ini untuk akun pengguna yang digunakan sebagai akun startup layanan SQL Server. Langkah ini mungkin diperlukan untuk mengumpulkan data performa penting yang dapat digunakan teknisi CSS untuk konfigurasi yang diperlukan dari berbagai opsi untuk SQL Server dan untuk aplikasi lain yang berjalan pada sistem. Setelah teknisi CSS mengumpulkan data performa, Anda dapat menetapkan halaman Kunci di pengguna memori langsung ke akun startup layanan SQL Server.

Sebelum Anda menetapkan halaman Kunci di pengguna memori dengan benar, pastikan Anda mengambil log Monitor Performa untuk menentukan persyaratan memori berbagai aplikasi dan layanan yang diinstal pada sistem. Aplikasi ini juga mencakup SQL Server. Untuk menentukan persyaratan memori, kumpulkan informasi garis besar berikut:

  • Pastikan Anda mengatur opsi memori server maks dan opsi memori server min dengan benar. Opsi ini hanya mencerminkan persyaratan memori kumpulan buffer dari proses SQL Server. Opsi ini tidak menyertakan memori yang dialokasikan untuk komponen lain dalam proses SQL Server. Komponen-komponen ini mencakup hal-hal berikut:

    • Utas pekerja SQL Server
    • Berbagai DLL dan komponen yang dimuat proses SQL Server dalam ruang alamat proses SQL Server
    • Operasi Pencadangan dan pemulihan
  • DLL dan komponen mencakup berbagai penyedia OLE DB, prosedur tersimpan yang diperluas, objek Microsoft COM yang digunakan untuk prosedur tersimpan sp_OACreate, server tertaut, dan CLR SQL Server. Memori yang dialokasikan untuk komponen ini berada di bawah wilayah kumpulan nonbuffer dari ruang alamat proses SQL Server. Untuk menentukan jumlah memori maksimum yang dapat digunakan seluruh proses SQL Server, Anda harus mengurangi memori yang dialokasikan untuk komponen yang tidak menggunakan kumpulan buffer dari total memori yang Anda inginkan untuk digunakan proses SQL Server. Kemudian, Anda dapat menggunakan nilai sisa untuk mengatur opsi memori server maks. Sebelum Anda mengatur opsi memori server maks dan opsi memori server min, Anda harus dengan hati-hati meninjau topik "Mengatur opsi memori secara manual" di SQL Server Books Online.

  • Tentukan persyaratan memori aplikasi lain dan komponen sistem operasi Windows. Aplikasi dapat mencakup komponen SQL Server lainnya, misalnya, SQL Server Agent, SQL Server Replication Agents, SQL Server Reporting Services, SQL Server Analysis Services, SQL Server Integration Services, dan SQL Server Full Text Search. Aplikasi yang melakukan operasi Pencadangan dan operasi penyalinan file dapat menggunakan banyak memori. Pertimbangkan operasi seperti salinan massal dan Agen Rekam Jepret yang menghasilkan IO file. Anda harus mempertimbangkan persyaratan memori semua aplikasi ini ketika Anda menentukan nilai opsi memori server maksimum dan opsi memori server min. Anda dapat menggunakan penghitung Byte Privat dan penghitung Set Kerja di bawah objek Proses untuk setiap proses untuk menentukan persyaratan memori untuk proses tertentu.

  • Secara default, halaman Kunci di kanan pengguna memori telah ditetapkan ke akun Sistem Lokal bawaan. Untuk informasi selengkapnya, kunjungi situs Web Microsoft berikut ini: Apakah saya harus menetapkan halaman Kunci di hak istimewa Memori untuk sistem Lokal?

  • Jika Anda menggunakan akun pengguna Windows secara global untuk semua proses SQL Server di domain, tentukan hak pengguna yang ditetapkan dengan menggunakan konfigurasi Kebijakan Grup. Proses SQL Server 32-bit dapat menggunakan akun ini sebagai akun startup. Namun, akun ini memerlukan halaman Kunci di hak pengguna memori untuk mengaktifkan Address Windowing Extensions fitur (AWE). Untuk informasi selengkapnya, lihat topik "Menyediakan jumlah maksimum memori ke SQL Server" di SQL Server Books Online.

  • Sebelum Anda mengonfigurasi opsi memori server maks dan opsi memori server min untuk beberapa instans SQL Server, pertimbangkan persyaratan memori kumpulan nonbuffer untuk setiap instans SQL Server. Kemudian, konfigurasikan opsi ini untuk setiap instans SQL Server.

Idealnya, Anda mengumpulkan informasi dasar ini selama beban puncak. Oleh karena itu, Anda dapat menentukan persyaratan memori untuk berbagai aplikasi dan komponen untuk mendukung beban puncak. Persyaratan memori bervariasi dari satu sistem ke sistem lain, tergantung pada aktivitas dan aplikasi yang berjalan pada sistem. Anda dapat mengkueri informasi yang disediakan dalam tampilan manajemen dinamis sys.dm_os_process_memory untuk memahami apakah sistem mengalami kondisi memori yang rendah. Untuk informasi selengkapnya, lihat sys.dm_os_process_memory (Transact-SQL).

Penyempurnaan ditambahkan dalam versi Windows Server 2008 dan R2

Windows Server 2008 dan Windows Server 2008 R2 meningkatkan mekanisme alokasi memori yang bersebelahan. Peningkatan ini memungkinkan Windows Server 2008 dan Windows Server 2008 R2 mengurangi hingga batas tertentu efek penomoran kumpulan aplikasi yang berfungsi ketika permintaan memori baru tiba.

Berikut ini adalah penjelasan tentang peningkatan dari whitepaper Microsoft "Advances in Memory Management in Windows":

Di Windows Server 2008, alokasi memori yang berdekatan secara fisik sangat ditingkatkan. Permintaan untuk mengalokasikan memori yang berdekatan jauh lebih mungkin berhasil karena manajer memori sekarang mengganti halaman secara dinamis, biasanya tanpa memangkas set kerja atau melakukan operasi I/O. Selain itu, lebih banyak jenis halaman—seperti tumpukan kernel dan halaman metadata sistem file, antara lain—sekarang menjadi kandidat pengganti. Akibatnya, memori yang lebih berdekatan umumnya tersedia pada waktu tertentu. Selain itu, biaya untuk mendapatkan alokasi tersebut sangat berkurang.

Untuk informasi selengkapnya, lihat Masalah Pemangkasan Set Kerja SQL Server.

Produk pihak ketiga yang dibahas di artikel ini diproduksi oleh perusahaan yang tidak berafiliasi apa pun dengan Microsoft. Microsoft tidak memberikan jaminan, tersirat atau sebaliknya, tentang performa atau keandalan produk ini.