Windows Server Üzerinde IIS Application Pool İzleme ve Geri Yükleme Senaryoları

Windows Server Üzerinde IIS Application Pool İzleme ve Geri Yükleme Senaryoları
Yazı Özetini Göster

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, 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 → WAS
  • System altı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

Bir Yorum Yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Benzer Yazılar