SQL SERVER’DA RAM DOWNGRADE (MAX SERVER MEMORY)

            Sunucu performansı, CPU, Bellek, RAM ve Depolama yapılandırmaları gibi çeşitli faktörlere bağlıdır. SQL Server, işletim sisteminin üstünde çalışır ve bu kaynaklarla yakından çalışır. 

            SQL Server izin verdiğiniz kadar bellek tüketir. SQL Server’a 24 GB bellek verirseniz, SQL Server 24 GB belleği kullanmak için elinden geleni yapacaktır. Bu durum karşınızda bize sunulan özelliklerin detayından biri de max server memory, yani max sunucu belleğidir.

            Max server memory , sanal olarak veri sayfalarını ve yordam önbelleğinin depoladığı bellektir. Max bellek oranının sunuculardaki varsayılan değeri 2147483647 MB şeklindedir. Ancak bu değer; tek başına SQL server çalışırken problem olmasa da sunucu üzerinde başka bir uygulama çalışması durumunda sağlıklı olmayacaktır ve kaynak tüketimine neden olacaktır. Bu durumun önüne geçmek için Server’da Ram kapasitesine göre memory üzerinden yapılandırma uygulanabilir.

Resim 1
Physical RAM                        MaxServerMem Setting
2GB                                           1500
4GB                                           3200
6GB                                           4800
8GB                                           6400
12GB                                         10000
16GB                                         13500
24GB                                         21500
32GB                                         29000
48GB                                         44000
64GB                                         60000
72GB                                         68000
96GB                                         92000
128GB                                       124000
Tablo 1

            Nitekim bu yapılandırmalar sırasında max server memory  düzenlemesi yapılırken vereceğimiz değerin belleğe göre küçük olması bize problem oluşturabilir. Bu durumda izlenecek yöntem sunucu üzerinden yeniden düzenleme ile  configure edilir. Ancak bu hususta server bize failed olarak dönüş sağlar ve SQL hizmeti başaltılamaz.

            Örneğin; kendi lokalimizde max server memory  değerini kontrol edelim ve bu değeri 200 mb yapalım. (Bu denemeyi  kesinlikle primary ve secondry olarak kullanılan sunucularınızda uygulamayınız!)

Resim 2
Resim 3

            Max server memory değerini 200 mb yapmamız durumuna server aşağıda  yer alan  yetersiz bellek hatasını verecektir ve login uyguladığınız mb kapasitesine göre login olmanız dahi engellenecektir.

Resim 4
Resim 5

            Bu durum karşısında sunucu cevap vermeyeceği için çözüm olarak izlenilen yollardan pratik olanı server sunucusunu kapatmak ve sistem üzerinden SQL Server Servisini açarak çalışır durumda olan state modları durdurmaktır.

Resim 6
Resim 7
Resim 8

            Her sunucu aynı stop işlemini veremeyebilir, eğer ki sunucu durdurulmaz ve çalışıyor ise serveri kill etmeniz gerekir. Bu işlem PC hizmetlerinde durduruluyor şeklinde görünmektedir.

Resim 9

            Durdurulması için ilgili sqlservr.exe’yi görev yöneticisinden sonlandırma işlemi yapabilirsiniz. Ancak durmaya devam eden Windows hizmeti nedeniyle sorun devam ederse komut dizini ile kill edilmelidir. Bunun için başlattan run ederek cmd’yi ya da direkt komut istemini çalıştırın ve bu sırada servisten SQL Server hizmet adını kontrol edin.

Resim 10

            Ardından cmd’ ye dönerek aşağıdaki kodu koplayın ve çalıştırın, burada hizmetin PID kodu ekranımıza gelecektir.

sc queryex MSSQLSERVER

Resim 11

            Daha sonra elde edilen PID numarası ile aşağıdaki yöntemi çalıştırın.

taskkill /f /pid [PID]

Resim 12

            İşlemi başarıyla tamamladığınızda The process with PID XXXX has been terminated mesajını alacaksınız.

            Şayet komut istemi ile işlem gerçekleşmediyse Windows PowerShell yöntemi ile de  hizmeti durdurmaya çalışabiliriz. Bunun için başlat menüsünde sağ tık yaparak gelen panelden Windows PowerShell (yönetici) ‘i çalıştırın.

Resim 13

            Açılan panelde aşağıdaki komutu çalıştırın.

Get-WmiObject -Class win32_service | Where-Object {$_.state -eq ‘stop pending’}

Resim 14

            Bu sayede durma durumundaki hizmetlerin bir listesini gelecektir. Buna gelen listeyi Stop-Process cmdlet komutu ile sonlandırabilirsiniz.

            Server sonlandırma başarılı olduktan sonra sunucuyu restart edebiliriz.

            SQL durdurulduğunda, minimum konfigürasyon anlamına gelen f parametresi ile başlamamız gerekiyor. Bunun için Komut istemini yönetici olarak açmamız ve aşağıdaki satırda yer aldığı şekilde çalıştırma işlemini gerçekleştirmeliyiz.

NET START MSSQLSERVER /f /mSQLCMD

            Bu işlem bize serverın başlatılmasını sağlar ancak bunu durdurduğumuz yerden yani maneger’ dan da uygulayabiliriz.

Resim 15

            Server’ı tekrar etkinliştirdikten sonra yeniden Microsoft Sql Server’ı çalıştırarak login olabiliriz. Server’ a bağlandıktan sonra Server proporties’e giriş yaparak max server memory değerini düzelterek bellek kapasitesini yeniden onarabiliriz.

Resim 16

            İnce ayrıntı burada Server’daki aynı değer değil Server’ın Fiziksel RAM’ine göre yukarıda belirttiğimiz Tablo 1 de yer alan MaxServerMem Setting değeri verilmelidir ya da kapasiteye uygun bir aralık verilebilir.

            Sonuç olarak DB tekrardan aktif olmuştur ve kullanılabilir.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir