none
Win2008 server sql ram şişme hatası RRS feed

  • Question

  • Sql server'i çalıştırınca ilk başlarda ramda 1,6 gb yer kaplarken gün içerisinde yükseliyor, yükseliyor, bazen bir gün bazen iki gün içerisinde 12 gblere yaklaşıp serverin tüm ramini sömürür hale geliyor. Dolayısıyla servere reset atmak zorunda kalıyoruz. Türkiye geneli 20 şubemizden bağlanılıyor ve nebim üzerinden satış yapılıyor. Sorunu microsoft telefonla destek ekibine sorduk, normalde hiç şişmemesi lazım bir kaç mb artar ama hep yerinde sayar dediler ve buraya konu açarak sormamızı istedikler.

    Yardımlarınızı bekliyoruz.

    Friday, August 12, 2011 12:24 PM

Answers

  • Microsoft'tan kiminle konuştun bilemiyorum, ama SQL Server bölümündeki arkadaşlarla olmadığı kesin! Bu sorunu yaşadığına göre o sunucuların etrafında SQL Server'dan anlayan tek bir kişi yok demektir. Bu nedenle İsmail'in anlattığı şeylerin sadece kafanı karıştıracağını tahmin ediyorum. Sana çok temel olarak ifade edeyim, SQL Server'da iki çeşit hafıza yönetim sistemi vardır.

    Birincisi ve varsayılan olanı, Dinamik Hafıza Yönetimidir. Bu yöntemde, SQL Server kullanabildiği kadar çok hafızayı kullanır ve OS veya diğer uygulamaların ihtiyacı olduğunda, ihtiyaç kadar hafızayı boşaltır; sonra tekrar kullanır.

    Diğer yöntem ise Statik Hafıza Yönetimidir. Bunda taban ve tavan değerlerini belirlersin ve SQL Server da hafızayı bu değerlere göre kullanır.

    Çok temel olarak hafıza yönetimi bu şekildedir. Bu ayarları da SSMS->Server Properties (Instance adının üstünde sağ tuşa tıkla, Properties)->Memory bölümünden veya Query Editor'de "sp_configure" sistem SP'sini kullanarak yapabilirsin. sp_configure'dan "max server memory" ve min server memory" ayarlarını (veya bu değerleri arayüzden) değiştirmen, Statik Hazıfa Yöntemini kullanman için kâfidir. Örneğin biz tüm Production sistemlerimizde (yaşadığın sorunları yaşamamak için) Statik Hafıza Yönetmini kullanırız.


    Ekrem Önsoy - MCDBA, MCITP:DBA+DBD, MCSD.Net, MCSE, ITILv3, SQL Server MVP | http://ekremonsoy.blogspot.com
    Friday, August 12, 2011 9:34 PM

All replies

  • Merhabalar,

    SQL serverda memory management işlemi Lazywriter adlı process tarafından yapılır.Bu process belli zaman aralıkları ile calişip SQL server ve işletim sisteminin memory ye ihtiyacına gore SQL server tarafından kullanılan Memory i yi artırıp azaltır.Fakat Lazywiret sadece İşletim sistemi yeterli memory e sahip değilse sql server process nin kullandıgı memmory miktarını azaltır.Fakat bu azaltmayı yaparken memoryde bulunan execution plan gibi verileri disk e yazar.Fakat bu verilerin disk e yazılması bu verileri erşişimi yavaslatacagı için SQL server bu işlemleri yappıp Memory kullanımını gerekl,i değilse azaltmaz Yani sql server ın bu ram i kullanması çok anormal bir durum olmamakla beraber Memory üzerinde bi anormalik durumunu olcebileceiniz SQL Server Buffer Mgr adlı bir ğparametre var onunda değeri : Lazy Writes/Sec olarak hesaplanıyor.Bu değern cok yuksek olmaması gerekir ki bu değerin yuksek olması demek SQL server ınızın yteri kadar memory si olmadıgına işarettir.

    Kolay gelsin

    Friday, August 12, 2011 1:37 PM
  • Bunlara ek olarak eğer memory kullanılmasını elle yönetmek istiyorsanız SQL server a bağlandıktan sonra sağ tıklayıp özellikler penceresinden memory sekmesine gelin ve gerekli ayarlarınızı yapın.
    Friday, August 12, 2011 1:38 PM
  • Memory kullanım kısıtlaması dışında birşey yapabilrmiyiz. Ek memory ilave edemiyoruz şimdilik.
    Friday, August 12, 2011 2:23 PM
  • Microsoft'tan kiminle konuştun bilemiyorum, ama SQL Server bölümündeki arkadaşlarla olmadığı kesin! Bu sorunu yaşadığına göre o sunucuların etrafında SQL Server'dan anlayan tek bir kişi yok demektir. Bu nedenle İsmail'in anlattığı şeylerin sadece kafanı karıştıracağını tahmin ediyorum. Sana çok temel olarak ifade edeyim, SQL Server'da iki çeşit hafıza yönetim sistemi vardır.

    Birincisi ve varsayılan olanı, Dinamik Hafıza Yönetimidir. Bu yöntemde, SQL Server kullanabildiği kadar çok hafızayı kullanır ve OS veya diğer uygulamaların ihtiyacı olduğunda, ihtiyaç kadar hafızayı boşaltır; sonra tekrar kullanır.

    Diğer yöntem ise Statik Hafıza Yönetimidir. Bunda taban ve tavan değerlerini belirlersin ve SQL Server da hafızayı bu değerlere göre kullanır.

    Çok temel olarak hafıza yönetimi bu şekildedir. Bu ayarları da SSMS->Server Properties (Instance adının üstünde sağ tuşa tıkla, Properties)->Memory bölümünden veya Query Editor'de "sp_configure" sistem SP'sini kullanarak yapabilirsin. sp_configure'dan "max server memory" ve min server memory" ayarlarını (veya bu değerleri arayüzden) değiştirmen, Statik Hazıfa Yöntemini kullanman için kâfidir. Örneğin biz tüm Production sistemlerimizde (yaşadığın sorunları yaşamamak için) Statik Hafıza Yönetmini kullanırız.


    Ekrem Önsoy - MCDBA, MCITP:DBA+DBD, MCSD.Net, MCSE, ITILv3, SQL Server MVP | http://ekremonsoy.blogspot.com
    Friday, August 12, 2011 9:34 PM
  • Kullanılan makine hem application server hem de database server olarak çalışıyorsa statik memory ayarını bilinçli yapmanız gerekiyor. Aksi durumda işletim sistemi tarafında memory sorunu yaşanabilir bu durumda her defasında SQL Server üzerinde min memory değerini düşürmeniz gerekiyor.

    Aslında sadece WINNER'e ait bir veritabanının çalıştığı bir makine için 12 GB az değil. Fakat kullanıcıları ve DB'yi nasıl yapılandırdığınız önemli. 20 şube RDP ile bağlanıp bu makine üzerinde WINNER'i kullanırken her kullanıcı için işletim sistemi bir memory ayıracak, arka tarafta çalışan servisleri ve WINNER ve diğer kasa uygulamalarının o anda kullandığı belleği de gözönünde bulundurduğumuzda WINNER  programını ve DB'yi ayrı makinelerde çalıştırmanız daha mantıklı olacaktır.


    Ahmet Kaymaz
    http://www.ahmetkaymaz.com
    C# VB.NET ASP.NET kitabı
    Sunday, August 14, 2011 4:35 PM
  • Merhaba,

    sql server 2008 r2 sunucuda 32 GB ın 31,5 SQlservr.exe tarafından kullanılıyor.aktif aktif çalışan clusterım bulunuyor.işlemi doğru yerden mi yaptığımı belirtmek için adım adım yaptığım işlem aşağıdaki gibi;

    serverv management studio da cluster ip sini yazarak sa ile bağlanıp,ip ye sağ tuş properties kısmından memory bölümündeki ayarda minumum server ve maximum serverv memory değerlerini girdim.use AWE to allocate memory işaretlemeden burada verdiğim değerler bir şey ifade etmiyor mu acaba?

    Şimdiden Teşekkür ederim

    Thursday, October 6, 2011 10:44 AM
  • Biz de ayno sorunu yaşamakya idik. 32 gb ramli bir suncuda 7 instance olarak calışan bir db sunucumuz var.

    periyodik olarak aşağıdaki sorguyu çalıştırarak şişme sorununu bir nebze olsun önleyebildik. Ama kesin çözümmüdür bilemiyorum.

    1 inci sorguyu çalıştırdıktan sonra task managerden kontrol ettiğiniz taktirde. Ram düşmesini görsel olarakta izleyebilirsiniz. Belirli bir seviyeye kadar indilten sonra stabile gelecektir. Daha sonra ikinci sorgu sql serverınızın ram değerleriniz maximuma çeker.

    1 inci sorgu

    EXEC sys.sp_configure 'show advanced options', '1' RECONFIGURE WITH OVERRIDE
    GO
    EXEC sys.sp_configure 'min server memory (MB)', '2000'
    GO
    EXEC sys.sp_configure 'max server memory (MB)', '2000'
    GO
    RECONFIGURE WITH OVERRIDE
    GO
    EXEC sys.sp_configure 'show advanced options', '0' RECONFIGURE WITH OVERRIDE
    GO
    -------------------------------

    2 inci sorgu

    EXEC sys.sp_configure 'show advanced options', '1' RECONFIGURE WITH OVERRIDE
    GO
    EXEC sys.sp_configure 'min server memory (MB)', '0'
    GO
    EXEC sys.sp_configure 'max server memory (MB)', '2147483647'
    GO
    RECONFIGURE WITH OVERRIDE
    GO
    EXEC sys.sp_configure 'show advanced options', '0' RECONFIGURE WITH OVERRIDE
    GO

    Monday, November 26, 2012 7:00 AM
  • Biz de ayno sorunu yaşamakya idik. 32 gb ramli bir suncuda 7 instance olarak calışan bir db sunucumuz var.

    periyodik olarak aşağıdaki sorguyu çalıştırarak şişme sorununu bir nebze olsun önleyebildik. Ama kesin çözümmüdür bilemiyorum.

    1 inci sorguyu çalıştırdıktan sonra task managerden kontrol ettiğiniz taktirde. Ram düşmesini görsel olarakta izleyebilirsiniz. Belirli bir seviyeye kadar indilten sonra stabile gelecektir. Daha sonra ikinci sorgu sql serverınızın ram değerleriniz maximuma çeker.

    1 inci sorgu

    EXEC sys.sp_configure 'show advanced options', '1' RECONFIGURE WITH OVERRIDE
    GO
    EXEC sys.sp_configure 'min server memory (MB)', '2000'
    GO
    EXEC sys.sp_configure 'max server memory (MB)', '2000'
    GO
    RECONFIGURE WITH OVERRIDE
    GO
    EXEC sys.sp_configure 'show advanced options', '0' RECONFIGURE WITH OVERRIDE
    GO
    -------------------------------

    2 inci sorgu

    EXEC sys.sp_configure 'show advanced options', '1' RECONFIGURE WITH OVERRIDE
    GO
    EXEC sys.sp_configure 'min server memory (MB)', '0'
    GO
    EXEC sys.sp_configure 'max server memory (MB)', '2147483647'
    GO
    RECONFIGURE WITH OVERRIDE
    GO
    EXEC sys.sp_configure 'show advanced options', '0' RECONFIGURE WITH OVERRIDE
    GO

    Sevgili Ali Rıza, sanırım (ve umarım) bu cevabı yanlışlıkla "çözüm olarak" önerdin.


    Ekrem Önsoy - MCDBA, MCITP:DBA+DBD, MCSD.Net, MCSE, ITILv3 | http://ekremonsoy.blogspot.com

    Monday, November 26, 2012 4:53 PM
  • Merhaba;

    benimde bunun biraz benzeri bir problemim var full ram kullanıyor.

    2 Tane  sql server 2008 r2 sunucularım var 1 tanesi ana sunucu diğeri terminal ikisinde de veritabanı var biraz ama 1 tanesi sürekli ram kullanıyor full olarak diğerindeki ile aynı ayarları yaptım.

    ama malesef düzelmedi.

    Saturday, September 23, 2017 7:09 AM
  • Merhaba Şaban,

    Bu başlık altında bazı bilgileri zaten paylaşmışız, bu nedenle onlara tekrar deyinmeyeceğim.

    Temel olarak yapman gerekenler:

    - SQL Server Instance'ının ne kadar RAM'e ihtiyacı olduğunu belirlemek,

    - Sunucu üstündeki diğer uygulamaların ve işletim sisteminin ne kadar RAM'e ihtiyacı olduğunu belirlemek, 

    - SQL Server'daki Max Server Memory ve Min Server Memory ayarlarını yapmak,

    - SQL Server Database Engine servisine (Local Security Policy'den) Lock Pages in Memory yetkisini vermek.

    Böylece SQL Server'ın RAM kullanımını kontrol altına almış olursun.

    Not: Değindiğim bazı konular başlı başına makale yazıları, burada maksadım sana yol göstermek, her şeyi ayrıntısıyla burada anlatmak pek mümkün değil.


    http://ekremonsoy.blogspot.com | http://www.ekremonsoy.com | @EkremOnsoy

    Thursday, September 28, 2017 9:11 AM