Forum
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.
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.
İlk olarak bununla başlayalım. duruma göre yönleniriz.
Merhaba,
Task managerprocesses'den kontrol ettiğinizde cpu'yu kullanan neler var kontrol ettiniz mi? Serverda virüs olabilir mi?
İyi çalışmalar.
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.
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
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.
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:
- Trace ile yüksek CPU tüketen sorguları bulup ilgili sorgularda CPU yu düşürecek düzenlemeler yapmak
- 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:))?
16 cpu 16gb ram server kapasitesi.
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.
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
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
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.