Windows Server Üzerinde IIS Application Pool İzleme ve Geri Yükleme Senaryoları
Windows Server Üzerinde IIS Application Pool İzleme ve Geri Yükleme Senaryoları
IIS (Internet Information Services), Windows Server ortamlarında web uygulamalarının barındırılmasını sağlayan güçlü bir platformdur. Uygulamaların kararlılığı, performansı ve erişilebilirliği büyük ölçüde Application Pool (Uygulama Havuzu) yapılandırmasına bağlıdır. Bu yazıda IIS Application Pool’ların izlenmesi, hatalı durumlarda otomatik geri yüklenmesi ve PowerShell tabanlı senaryo örneklerini ele alıyoruz.
- Application Pool Nedir?
- Application Pool Durumlarını İzleme
- PowerShell ile İzleme
- Event Viewer Logları
- Application Pool Otomatik Yeniden Başlatma
- Kaynak Limitlerine Göre Yeniden Başlatma
- Uygulama Havuzu Çöktüğünde Otomatik Geri Yükleme
- PowerShell ile Otomatik İzleme ve Kurtarma Scripti
- CPU ve Bellek İzleme Senaryosu
- Yedekleme ve Geri Yükleme
- Application Pool Geri Yükleme Senaryosu
- Log Analizi ve Uyarı Sistemi
- En İyi Uygulamalar
- Sonuç
Application Pool Nedir?
Application Pool, IIS üzerinde çalışan web uygulamalarını birbirinden izole eden işlem gruplarıdır. Her havuz kendi w3wp.exe süreci altında çalışır. Bu yapı:
- Uygulama çökmesi durumunda diğer uygulamaları etkilemez,
- Kaynak yönetimi (RAM, CPU) kontrolünü kolaylaştırır,
- Farklı .NET veya PHP sürümlerini aynı sunucuda paralel çalıştırmayı sağlar.
Application Pool Durumlarını İzleme
IIS yönetim konsolu veya PowerShell üzerinden tüm uygulama havuzlarının durumunu izleyebilirsiniz.
PowerShell ile İzleme
Import-Module WebAdministration Get-ChildItem IIS:\AppPools | Select-Object name, state
Sonuç, her havuzun “Started”, “Stopped” veya “Starting” durumunu gösterir. Bu komut periyodik izleme senaryolarında kullanılabilir.
Event Viewer Logları
IIS havuzu hataları genellikle aşağıdaki loglarda görülür:
Applications and Services Logs → Microsoft → Windows → WASSystemaltında Event ID 5057, 5059, 5074, 5079 gibi hatalar
Application Pool Otomatik Yeniden Başlatma
IIS varsayılan olarak uygulama havuzlarını 1740 dakikada (29 saat) bir yeniden başlatır. Bu davranışı düzenleyebilirsiniz:
Set-ItemProperty IIS:\AppPools\MyAppPool -Name recycling.periodicRestart.time -Value 00:00:00
Bu örnek otomatik yeniden başlatmayı devre dışı bırakır.
Kaynak Limitlerine Göre Yeniden Başlatma
Set-ItemProperty IIS:\AppPools\MyAppPool -Name recycling.periodicRestart.privateMemory -Value 1024000
Bu ayar, 1 GB bellek aşımında havuzu yeniden başlatır.
Uygulama Havuzu Çöktüğünde Otomatik Geri Yükleme
Bir havuz çöktüğünde otomatik olarak yeniden başlatılmasını sağlamak için “Rapid-Fail Protection” ayarlarını yapılandırın:
Set-ItemProperty IIS:\AppPools\MyAppPool -Name failure.rapidFailProtection -Value $true Set-ItemProperty IIS:\AppPools\MyAppPool -Name failure.rapidFailProtectionMaxCrashes -Value 5 Set-ItemProperty IIS:\AppPools\MyAppPool -Name failure.rapidFailProtectionInterval -Value (New-TimeSpan -Minutes 5)
Bu ayar, 5 dakika içinde 5 kez çökerse havuzu otomatik durdurur ve log kaydı oluşturur. İzleme scriptleriyle bu durumda yeniden başlatma tetiklenebilir.
PowerShell ile Otomatik İzleme ve Kurtarma Scripti
Aşağıdaki örnek script, tüm Application Pool’ları izler; “Stopped” durumundaki havuzları otomatik başlatır:
Import-Module WebAdministration
$AppPools = Get-ChildItem IIS:\AppPools
foreach ($pool in $AppPools) {
if ($pool.state -ne "Started") {
Write-Host "[$($pool.name)] durdurulmuş. Yeniden başlatılıyor..."
Start-WebAppPool $pool.name
} else {
Write-Host "[$($pool.name)] çalışıyor."
}
}
Bu script bir Task Scheduler görevi olarak 5 dakikada bir çalıştırılarak kesintisiz hizmet sağlanabilir.
CPU ve Bellek İzleme Senaryosu
IIS Application Pool süreçleri (w3wp.exe), performans sayaçları (Performance Counters) ile izlenebilir:
Get-Counter "\Process(w3wp*)\% Processor Time" Get-Counter "\Process(w3wp*)\Private Bytes"
Bu komutlar CPU ve bellek kullanımını gösterir. Belirli bir eşiğin aşılması durumunda e-posta bildirimi veya log kaydı oluşturulabilir.
Yedekleme ve Geri Yükleme
Uygulama Havuzu yapılandırmalarını XML formatında yedekleyebilirsiniz:
%windir%\system32\inetsrv\appcmd add backup "IIS_Backup_$(Get-Date -Format yyyyMMdd)"
Geri yükleme:
%windir%\system32\inetsrv\appcmd restore backup "IIS_Backup_20251029"
Application Pool Geri Yükleme Senaryosu
Hatalı bir yapılandırma sonrası belirli bir havuzu geri almak için:
appcmd list apppool "MyAppPool" /config /xml > C:\backup\MyAppPool.xml # Geri yükleme appcmd add apppool /in < C:\backup\MyAppPool.xml
Log Analizi ve Uyarı Sistemi
Gelişmiş izleme için PowerShell veya üçüncü parti araçlarla logları analiz edebilirsiniz:
- EventLog:
Get-WinEvent -LogName System -FilterXPath "*[EventID=5059]" - Health Monitoring: Application Pool “pingingEnabled” parametresi aktif olmalı:
Set-ItemProperty IIS:\AppPools\MyAppPool -Name processModel.pingingEnabled -Value $true Set-ItemProperty IIS:\AppPools\MyAppPool -Name processModel.pingInterval -Value (New-TimeSpan -Seconds 30)
En İyi Uygulamalar
- Her kritik uygulama için ayrı Application Pool kullanın.
- Havuzları RAM ve CPU limitlerine göre optimize edin.
- Günlük yedekleme (appcmd backup) otomatik hale getirin.
- Otomatik izleme scriptlerini Task Scheduler veya PowerShell Job olarak planlayın.
- Health Monitoring açık tutarak w3wp süreçlerinin yanıt verip vermediğini kontrol edin.
Sonuç
Application Pool izleme ve geri yükleme stratejisi, IIS üzerinde çalışan web uygulamalarının sürekliliğini sağlar. PowerShell otomasyonu ve periyodik yedekleme sayesinde, çökme veya yapılandırma hataları durumunda dakikalar içinde geri dönüş mümkündür. Kurumsal düzeyde sürdürülebilir performans için HostLigo Windows VDS altyapısı ile bu çözümleri entegre ederek kararlılığı artırabilirsiniz.
makefile
Kodu kopyala