Kami memiliki basis data dengan campuran beban kerja OLAP / OLTP. Pertanyaan cukup ad-hoc dan secara dinamis dibuat di server aplikasi tingkat menengah. Saat kami memulai server, kinerjanya cukup dapat diterima, tetapi konsumsi memori semakin lama semakin lama hingga semua memori yang tersedia (30GB) habis. Setelah itu, sistem menjadi semakin lambat.
Perintah seperti Dbcc freeproccache
tidak berpengaruh.
Tidak ada banyak transaksi di select * from sys.dm_tran_session_transactions
(tidak lebih dari ketika sistem baik-baik saja), beberapa kali daftar ini kosong.
Hasil pertama dbcc memorystatus
adalah
VM Reserved 42136628
VM Committed 1487176
Locked Pages Allocated 24994048
Reserved Memory 1024
Reserved Memory In Use 0
Restart SQL Server memecahkan masalah untuk sementara waktu.
- Apa yang menyebabkan perilaku ini? Bagaimana itu bisa dihindari?
- Jika solusi nyata untuk penyebabnya terlalu sulit, apakah ada perintah yang memaksa SQL Server untuk benar-benar melepaskan semua memori tanpa restart DBMS lengkap?
Server berjalan pada perangkat keras khusus (bukan VM). Kami memiliki beberapa pekerjaan yang dijadwalkan, tetapi kami menonaktifkannya untuk sementara waktu, tanpa perubahan. Ada aplikasi mid tier lain yang berjalan di server yang sama, tetapi mereka menggunakan tidak lebih dari 2GB memori, CPU dapat diabaikan, dan hampir tidak ada I / O. Kami me-restart semua aplikasi seperti itu tanpa perubahan.