Sql Cpu ve Ram Kull...
 
Bildirimler
Hepsini Temizle

Sql Cpu ve Ram Kullanımı  

  RSS
HasanYILDIZ
(@HasanYILDIZ)
Üye

Merhabalar;

  Sql 2008 kullanıyorum 20 gb boyutunda bir datam var. Bir kaç gündür sql server işlemciyi yüzde 90 larda kullanmaya başladı ve hep kullandığımız ticari programlar çok yawaş çalışmaya zaman zamanda sql bağlantısı kopmaya başladı. ram kullanımı ise 4-8 gb yi geçmiyor halbuki 16 gb ram kapasitesi var server in neden kaynaklanıyor olabilir. Sql i kaldırıp yeniden kurdum ama değişen bişi olmadı kullanıcı sayısı ise yaklaşın 70 bu sorunu bir kaç gündür yaşıyorum.

Alıntı
Gönderildi : 21/10/2010 13:20
Turgay Sahtiyan
(@turgaysahtiyan)
Üye

Eğer CPU yu %90 oranında SQL Server kullanıyorsa bunu hangi proses'lerin kullandığına bakmakta fayda var. 

aktif olan prosesleri sorgulamak ve ne kadar kaynak tükettiklerine bakmak için sys.dm_exec_request DMV'sini kullanabilirsin. Bu konuyla alakalı detaylı yazıma aşağıdan erişebilirsin.

http://www.turgaysahtiyan.com/post/SQL-Server-e28093-Her-Gun-1-DMW-Gun-3-DMWe28099ler-ile-Session(Process)-Kontrolleri.aspx  

İlk olarak bununla başlayalım. duruma göre yönleniriz. 

CevapAlıntı
Gönderildi : 21/10/2010 13:31
Murat CAN
(@muratcan-2)
Tecrübeli Üye Forum Yöneticisi

Merhaba,


Task managerprocesses'den kontrol ettiğinizde cpu'yu kullanan neler var kontrol ettiniz mi? Serverda virüs olabilir mi?


İyi çalışmalar.

CevapAlıntı
Gönderildi : 21/10/2010 13:31
HasanYILDIZ
(@HasanYILDIZ)
Üye

Turgay hocam makalenizi inceledim gerçekten çok işime yarayacak. Ama hangi işin nekadar cpu kullandığını tesbit edemedim. sys.dm_exec_request DMV  ile baktığımda çalışan işleri felan gösteriyor. Gelen listede aşırı bir işte yok ve listeyi 1-2 saniyede yeniliyorum takılan uzun süren bekleyen bir işte gözükmüyor. Virüs olmadığına eminim çünkü cpu yu ve ram i sadece sql kullanıyor sql i stop ettiğimde cpu ve ram kullanımı 0 a düşüyor.

CevapAlıntı
Gönderildi : 21/10/2010 13:59
Turgay Sahtiyan
(@turgaysahtiyan)
Üye

hmm..bu durumda sql üzerinde çalışan proseslerde bir sıkıntı olmadığını, cpu kullanımına bu proseslerin sebep olmadığını söyleyebiliriz.

peki birde sadece database engine çalışır vaziyette bırakıp diğer bütün servisleri kapatır mısın 

CevapAlıntı
Gönderildi : 21/10/2010 14:19
HasanYILDIZ
(@HasanYILDIZ)
Üye

Servislerden sadece database engine yi çalışr hale getirdim nerdeyse hiç etkilenmedi ancak  server properties te memory use AWE to allocate memory işaretli değildi bunu işaretledim ram kullanmı 4 gb den 9 gb ye kadar yükseldi (bu oran normal gibi) bağlantı kesilmeler olmuyor artık ama cpu kullanımıda yüzde 80 den aşşağı düşmüyor. programın çalışması şimdilik birazdaha normal hızına yaklaştı ancak eski performansta hala çalışmıyor. Burdaki ayarlardan kaynaklanıyor olabilirmi yada böyle bir sistem için tavsiye edeceğiniz bir ayar varmıdır.

CevapAlıntı
Gönderildi : 21/10/2010 14:33
Mehmet GÜZEL
(@mehmetguzel)
Üye

Eğer AWE yi kullanıp RAM ı 4 ten 9GB çıkartmışsan x86 bir makinada SQL i çalıştırıyorsun demektir. x86 nın belirli sınırları vardır x64 te geçmekte yarar var. CPU nun yüksekliğinin nedenini bulmak için aşağıdaki adımları yapabilirsin:



  1. Trace ile yüksek CPU tüketen sorguları bulup ilgili sorgularda CPU yu düşürecek düzenlemeler yapmak

  2. Perfmon dan CPU , cpu nun yükselmesini tetikleyebilecek counter ları izlemek(re-compilation, sql buffers, wait stats vs)

Bu arada kullanılan makinanın konfigürasyonlarını paylaşır mısın(gelen  isteklere göre CPU sayısı zaten azsa konuşacak çok bir şey kalmayacak:))?

CevapAlıntı
Gönderildi : 22/10/2010 06:36
HasanYILDIZ
(@HasanYILDIZ)
Üye

16 cpu 16gb ram server kapasitesi.

CevapAlıntı
Gönderildi : 22/10/2010 12:44
Turgay Sahtiyan
(@turgaysahtiyan)
Üye

En çok CPU tüketen query leri sorgulamak için aşağıdaki query i kullanabilirsin. Bu query en çok cpu tüketen ilk 50 sorguyu verecektir. Detaylı açıklama için makaleye bakabilirsin.

http://www.turgaysahtiyan.com/post/SQL-Server-e28093-Her-Gun-1-DMW-Gun-4-sysdm_exec_query_stats-ile-Query-Istatistikleri.aspx  

select 

     q.[text],

     SUBSTRING(q.text, (qs.statement_start_offset/2)+1, 

        ((CASE qs.statement_end_offset

          WHEN -1 THEN DATALENGTH(q.text)

         ELSE qs.statement_end_offset

         END - qs.statement_start_offset)/2) + 1) AS statement_text,        

     qs.last_execution_time,

     qs.execution_count,

     qs.total_worker_time/1000000 as total_cpu_time_sn,

     qs.total_worker_time/qs.execution_count/1000 as avg_cpu_time_ms,

     qp.query_plan,

     DB_NAME(q.dbid) as database_name,

     q.objectid,

     q.number,

     q.encrypted

from 

    (select top 50 

          qs.last_execution_time,

          qs.execution_count,

 qs.plan_handle, 

          qs.total_worker_time,

          qs.statement_start_offset,

          qs.statement_end_offset

    from sys.dm_exec_query_stats qs

    order by qs.total_worker_time desc) qs

cross apply sys.dm_exec_sql_text(plan_handle) q

cross apply sys.dm_exec_query_plan(plan_handle) qp

order by qs.total_worker_time desc 

CevapAlıntı
Gönderildi : 22/10/2010 13:39
MelihMERCAN
(@MelihMERCAN)
Üye

Turgay Hocam,

Tarihe baktığımda konu baya eskimiş ama bende de Ram %95 lerden düşmüyor. CPU Kullanımı %5.  Kullandığımız ERP programı bu Ram yükselişlerinden hata veriyor hatta program kitleniyor. Server ı yeniden başlatıyorum ve son 4-5 aydır 2. sorunum olan aktif kullanılan DB Recovery e düşüyor. Yeni db yaratıp yedekten restorede yaptım yine recovery e düştü. 1,5 saatte ayağı kalka bildi ve sadece 1 gün dayanabiliyor. Ram i sonuna kadar kullanıyor. Bugün itibariyle db boyutu 17 GB bunun yanında log kayıtları da 100 GB buldu. Aşağıdaki gerekli bakımları her hafta planlı olarak çalışıyor. Fakat ne yaptıysam Ram kullanımını da düşüremedim. donma sıkıntısı olduğunda recovery durumunu da değiştiremedim.

- Back Up Database (Full)

- Shrink Database Task

- Rebuild Index Task 

- Check Database

- Update Statistics Task 

- Reorganize Index Task 

- History Cleanup Task 

CevapAlıntı
Gönderildi : 12/06/2015 18:46
MelihMERCAN
(@MelihMERCAN)
Üye

Araştırmalarım üzerine galiba bu ram düşüşü sadece server yeniden başladığında düşüyor. Sql sürekli rame ihtiyaç duyuyor. örneğin bende 24gb var 96 olsa onuda kullanacak. fakat rekovery durumuna bir çözüm buldum. db yi özelliklerden recovery özelliğini simple moda alıp sonra log u shirnk yapılınca hem logu küçültüyorsunuz hemde recovery olayı 1,5 saat beklemekten kurtuluyoruz. denedim gördüm recoveye düşmedi. tabiki sonra simple modu eski haline full moda çeviriniz.

CevapAlıntı
Gönderildi : 18/06/2015 13:05
Paylaş: