Bir Windows Server görünür bir sebep olmadan yavaşlamaya başladığında, suçlu genellikle kasten hiç kimseye dokunmadığı gizli Windows Server performans ayarlarıdır. Benim ortamımda, sıfır sunucuların potansiyellerinin yarısında çalıştığını gördüm; çünkü OS güç tasarrufu varsayılanları, aşırıya kaçan indeksleme ve sessizce CPU ile disk I/O yiyen tarama döngüleriyle geldi. İşte ilk başta kontrol ettiğim sunucu tarafı performans tuzakları ve makineyi gerçek hızına geri döndürmek için uyguladığım kesin çözümler.
CPU'yu Kıslayan Power Plan Varsayılanları
En çok gördüğüm şey bu. Windows Server bazen Balanced veya Power Saver power plan ile gelir, özellikle genel şablonlardan klonlanan sanal makinelerde. Balanced masum görünür ama çekirdekleri agresif şekilde park eder ve saat hızlarını düşürür. Bir veritabanı sunucusunda veya yoğun bir dosya sunucusunda bu karar sana gecikme ve throughput olarak pahalıya patlar.
PowerShell'den aktif planı kontrol et:
powercfg /getactivescheme
High Performance dışında bir şey dönerse, hemen düzelt:
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
O GUID High Performance planıdır. Bunu her yeni sunucu kurulumunda production'a almadan önce çalıştırırım. Fiziksel donanımda ayrıca BIOS güç yönetimi ayarını kontrol et. BIOS adaptive modundaysa, OS seviyesindeki High Performance planı onu tamamen geçersiz kılmaz.
SysMain ve İndekslemenin Disk I/O'yu Çiğnemesi
SysMain, eskiden Superfetch, verileri RAM'e önceden yükleyerek uygulama başlatmalarını hızlandırmak için tasarlanmıştır. Bir masaüstünde belki işe yarar. SQL Server veya ağır batch job çalıştıran bir sunucuda SysMain, gerçek iş yükünle disk erişimi için yarışır. Yönettiğim her sunucuda bunu devre dışı bırakırım.
Stop-Service -Name SysMain -Force
Set-Service -Name SysMain -StartupType Disabled
Windows Search indeksleme servisi bir diğer sessiz kaynak canavarıdır. Bir dosya sunucusunda indeksleme faydalıdır. Bir uygulama sunucusunda veya domain controller'da sadece kimsenin aramayacağı dosyaları tarayarak CPU döngülerini yakar. Kullanıcılar sunucuda aktif olarak arama yapmıyorsa, devre dışı bırak:
Stop-Service WSearch -Force
Set-Service WSearch -StartupType Disabled
Daha önce Linux ve Windows Server arasında seçim yapma yazımda (https://furkanikkan.com/urun/linux-mu-windows-server-mi-gercek-senaryolara-gore-dogru-os-secimi-39) belirttiğim gibi, OS'u iş yüküne göre tune etmen gerek. Varsayılan ayarlar genel bir masaüstü deneyimi için tune edilmiştir, production sunucu yükleri için değil.
Active Directory'lerde Windows Defender Tarama Döngüleri
Windows Defender yerleşiktir ve genelde iyidir. Ama ağır dosya I/O'su, bir veritabanı motoru veya bir yedekleme servisi olan bir sunucuda real-time protection bir geri besleme döngüsü yaratabilir. Yedekleme yazılımı dosyaları okur, Defender her okumayı tarar, yedekleme yavaşlar ve disk gecikmesi fırlar. Bundan dolayı yedekleme pencerelerinin süresinin ikiye katlandığını gördüm.
Çözüm, doğru istisnalar eklemektir. En azından veritabanı dosyalarını, log dizinlerini ve yedekleme çalışma klasörlerini istisna tut. SQL Server için bu yollar kritiktir:
- Veritabanı
.mdf,.ldfve.ndfdosyaları - SQL Server yedekleme dizinleri
- Full-text catalog dosyaları
- TempDB dosyaları
İstisnaları PowerShell üzerinden ekleyebilirsin:
Add-MpPreference -ExclusionPath "D:\SQLData"
Add-MpPreference -ExclusionPath "E:\SQLLogs"
Add-MpPreference -ExclusionProcess "sqlservr.exe"
Remote Desktop Session Host Tuning Hataları
RDS sunucularında varsayılan ayarlar tek bir kullanıcı için tasarlanmıştır, düzinelerce eşzamanlı oturum için değil. Sadece görsel efektler performansı batırabilir. Her oturumun gölgeler, pürüzsüz kenarlar ve menü animasyonları render etmesi, kullanıcı sayısıyla ölçeklenen CPU yükü ekler.
RDS hostlarında görsel efektleri sistem genelinde devre dışı bırakırım:
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects" -Name "VisualFXSetting" -Value 2
2 değeri onu en iyi performansa ayarlar. Bunu varsayılan kullanıcı profilinde de ayarlaman gerekir ki yeni oturumlar onu miras alsın. Görsellerin ötesinde, RDS lisanslama modunu kontrol et. Grace period'da takılan veya yanlış yapılandırılmış lisanslamaya sahip bir sunucu kullanıcıları rastgele atar ve insanlar gerçek sorun lisanslama olduğunda performansı suçlar.
Disk Hizalaması ve Partition Offset Sorunları
Bu artık daha az yaygın ama eski sürümlerden yükseltilen veya üçüncü taraf araçlarla migrate edilen sunucularda hâlâ karşımıza çıkıyorum. Partition offset'in alttaki depolama stripe boyutuna hizalı değilse, her yazma işlemi iki fiziksel yazmaya neden olur. Sunucu çalışır ama disk gecikmesi her zaman olması gerektiğinden daha yüksektir.
Offset'i kontrol et:
wmic partition get startingoffset, name
Modern depolama için offset 4096 ile bölünebilmelidir. 32256 gibi bir sayı görürsen, eski nesil bir hizalama sorunun var. Bunu düzeltmek yedekleme, silme ve geri yükleme gerektirir ki bu acı vericidir. Bu yüzden hizalamayı her zaman ilk kurulum sırasında doğrularım.
Yavaş Bir Sunucuda İlk Kontrol Ettiğim Şeyler
Yavaş bir Windows Server hakkında bir bilet aldığımda, troubleshooting sıram şöyledir:
- Power plan'ı kontrol et. Beş saniye, vakaların %30'unu çözer.
- SysMain veya WSearch aktivitesi için Task Manager'a bak.
Get-MpPreferenceile Defender istisna yollarını incele.- Resource Monitor veya Performance Monitor'da disk gecikmesini kontrol et.
- Session host ise RDS görsel efektlerini ve lisanslamayı doğrula.
Windows Server'daki performans sorunlarının çoğu donanım sorunu değildir. Yapılandırma sorunlarıdır. Donanım yeteneklidir ama OS döngüleri iş yükün için önemli olmayan şeylere harcıyor. Varsayılanları düzelt, doğru yolları istisna tut ve sunucu genellikle tek bir donanım yükseltmesi olmadan hayata dönecektir.
Kapak görseli: cogdogblog · CC0 (Openverse / kamu malı) · https://www.flickr.com/photos/37996646802@N01/2093926600
