Her gün aynı saatte birkaç dakika süren bir yavaşlık, SQL Server tarafında hiçbir açıklama bulamıyorsanız, çoğu zaman sunucunun kendisinde çalışan başka bir işin izidir. Windows Task Scheduler’da tanımlı görevler; dosya kopyalama script’leri, eski yedekleme araçları, antivirüs taramaları, disk bakımı ya da bir zamanlar biri tarafından kurulmuş ve unutulmuş bir rapor programı, SQL Server ile aynı CPU’yu, belleği ve diski paylaşır. Bu görevler SQL Server’ın kendi araçlarında görünmediği için genellikle en son akla gelir.
Bu yazıda bir veritabanı sunucusundaki zamanlanmış görevleri nasıl listeleyeceğinizi, performans düşüşleriyle nasıl ilişkilendireceğinizi ve nasıl düzenleyeceğinizi anlatıyoruz.
Belirli saatlerde açıklanamayan yavaşlıklar mı var?
Aryasoft, SQL Server'ı ve üzerinde çalıştığı sunucuyu birlikte inceler; periyodik yavaşlıkların kaynağını bulur.
Belirtiler
- Her gün ya da her hafta aynı saatte tekrarlayan yavaşlık.
- SQL Server’da o saatte çalışan ağır bir sorgu ya da Agent job’ı yok.
- Disk gecikmesi ya da CPU kullanımı o saatte yükseliyor, ama SQL Server sürecinin payı artmıyor.
- Bekleme istatistiklerinde
PAGEIOLATCHya daWRITELOGbeklemeleri belirli dönemlerde artıyor.
Zamanlanmış Görevleri Listelemek
Windows’un kendi bakım görevleri \Microsoft\ klasöründe bulunur. Asıl bakmanız gerekenler, sonradan eklenmiş görevlerdir:
# Microsoft dışındaki etkin görevler, sonraki ve son çalışma zamanlarıyla
Get-ScheduledTask |
Where-Object { $_.State -ne 'Disabled' -and $_.TaskPath -notlike '\Microsoft\*' } |
ForEach-Object {
$info = Get-ScheduledTaskInfo -TaskName $_.TaskName -TaskPath $_.TaskPath
[pscustomobject]@{
Gorev = $_.TaskPath + $_.TaskName
Calistiran = $_.Principal.UserId
Komut = ($_.Actions | ForEach-Object { $_.Execute + ' ' + $_.Arguments }) -join '; '
SonCalisma = $info.LastRunTime
SonrakiCalisma = $info.NextRunTime
}
} | Sort-Object SonrakiCalisma | Format-Table -AutoSize
Sonuçtaki görevlerin çalışma saatlerini, yavaşlık yaşanan saatlerle karşılaştırın. Görevin hangi hesapla çalıştığı (Calistiran) da önemlidir: yerel yönetici ya da etki alanı yöneticisi hesabıyla çalışan, kime ait olduğu bilinmeyen bir görev aynı zamanda bir güvenlik riskidir.
Sık Karşılaşılan Görevler
- Dosya düzeyinde yedekleme ve kopyalama: SQL Server veri ve log dosyalarını ya da yedek klasörünü kopyalayan script’ler. SQL Server’ın açık tuttuğu dosyaları kopyalamak hem yük yaratır hem de tutarlı bir yedek üretmez.
- Antivirüs taramaları: SQL Server dosyaları ve klasörleri istisna listesinde değilse, tam tarama veri dosyalarına da dokunur.
- Disk birleştirme ve bakım: SAN ya da sanal disklerde gereksiz I/O yaratabilir; depolama ekibiyle birlikte değerlendirin.
- Eski raporlama ve entegrasyon script’leri: sqlcmd ya da PowerShell ile veritabanına sorgu atan, kimsenin artık kullanmadığı programlar.
- Güncelleme ve envanter araçları: İş saatlerinde çalışacak şekilde ayarlanmış tarama ve güncelleme görevleri.
Uyarı
Veritabanı dosyalarını (mdf, ndf, ldf) dosya kopyalama yoluyla yedeklemek tutarlı bir yedek üretmez; SQL Server çalışırken kopyalanan dosyalardan geri dönüş çoğu zaman mümkün olmaz. Veritabanı yedekleri her zaman BACKUP komutuyla ya da SQL Server’la entegre çalışan bir yedekleme çözümüyle alınmalıdır.
Ne Yapılmalı?
- Her görevin sahibini ve amacını belirleyin; sahibi olmayan ve amacı bilinmeyen görevleri devre dışı bırakın.
- Veritabanıyla ilgili işleri SQL Server Agent’a taşıyın; böylece geçmişleri, bildirimleri ve zamanlamaları tek yerden yönetilir. Bkz. SQL Server Agent rehberimiz.
- Kalması gereken görevleri SQL Server’ın bakım pencereleriyle çakışmayacak saatlere alın.
- Antivirüs istisnalarını SQL Server için tanımlayın.
- Görev listesini sunucu belgelerine ekleyin ve health check’lerde düzenli olarak gözden geçirin.
İpucu
Belirli saatlerde tekrarlayan yavaşlıkları araştırırken, SQL Server’ın kendi bekleme istatistiklerini ve disk gecikmesini periyodik olarak bir tabloya kaydedin. Hangi saatte neyin değiştiğini gösteren bir baseline, sorunun SQL Server içinden mi dışından mı geldiğini birkaç gün içinde ortaya çıkarır.
Kontrol Listesi
- Microsoft dışındaki tüm zamanlanmış görevler listelendi.
- Her görevin sahibi, amacı ve çalıştığı hesap belli.
- Veritabanı işleri Agent’a taşındı.
- Kalan görevler bakım pencereleriyle çakışmıyor.
- Dosya kopyalamayla veritabanı yedeklemesi yapılmıyor.
İlgili Yazılar
SQL Server Performans Danışmanlığı
Sunucunuzun tamamını görün
Aryasoft’un kıdemli DBA ekibi SQL Server’ı ve üzerinde çalıştığı sunucuyu birlikte inceler; zamanlanmış görevler, antivirüs ve diğer yazılımlar kaynaklı periyodik yavaşlıkları bulur ve giderir.