IIS7'de uygulama havuzu boşta kalma zaman aşımı nasıl devre dışı bırakılır?


Yanıtlar:


185

Evet, boşta kalma zaman aşımı değerini sıfıra ayarlamak, boşta kalma zaman aşımlarını devre dışı bırakır.

İşin garibi, bu MS belgelerinde belgelenmemiştir, ancak bunun için kanıtım şunlardan kaynaklanmaktadır:

  • IIS Ayarları Şeması

    IIS ayarları şemasına şu adresten bakarsanız:

    C:\Windows\System32\inetsrv\config\schema\IIS_schema.xml

    İçin şema tanımı idleTimeoutunder

    <sectionSchema name="system.applicationHost/applicationPools">

    şöyle görünüyor:

    <attribute name="idleTimeout" 
           type="timeSpan" 
           defaultValue="00:20:00" 
           validationType="timeSpanRange" 
           validationParameter="0,2592000,60"/>
    

    validationParameterÖzniteliğe bakarsanız, 0 ile 2592000 saniye arasında bir aralık görürüz (bu ,60, ayarın ayrıntı düzeyini belirtir, bu durumda değer 60 [bir dakika] ile bölünebilir olmalıdır).

    İzin verilen bir başlangıç ​​değeri 0görürseniz, bu genellikle ayarın devre dışı bırakılabileceğini gösterir.

  • IIS7 Uygulama Havuzu Boşta Kalma Zaman Aşımı Ayarları

    Brad Kingsley, oldukça tanınmış, saygın ve güvenilir bir Microsoft barındırıcısı ve Gold Partner olan OrcsWeb'in kurucusu ve CEO'sudur.

  • Ayrıca bunun "sadece işe yaradığına" dair ampirik kanıtlar da var.


3
Başkalarına bir uyarı - bunu okuduktan sonra, IIS7'de boşta kalma zaman aşımımı 0 olarak ayarladım ve hemen zaman aşımına başladı - her sayfa yüklemesi 15 saniye kadar sürdü. Şimdi bunu 600'e çıkardım ve her şey yine son derece hızlı.
nailitdown

1
@nailitdown: Bunu iki kez kontrol etmek isteyebilirsiniz. IIS6 uygulama havuzu zaman aşımımı 0 olarak ayarladım ve iyi çalışıyor. IIS7 / IIS6 arasında farklı olma ihtimali var, bunu bilmek iyi olur.
Doug S

3
Çalıştığım VPS ile birden fazla sorun yaşadığımızı yazdığımdan beri ... büyük olasılıkla bir şekilde yanlış yapılandırılmıştı. Yeni VPS'de kopyalamaya çalıştım ve açıklandığı gibi düzgün davranıyor.
nailitdown

3
@ Zero3 - pekala .... yüksek trafikli bir sitede herhangi bir ayarı değiştirmeden önce , her zaman evreleme / QA ortamınızdaki yan etkileri vb. Test etmelisiniz. Ayrıca değişikliği üretim ortamınıza uyguladığınız süre boyunca, değişiklik yürürlüğe girinceye kadar herkese açık kullanıcılar için bir bakım sayfası hazırlamanız gerekir. Sürpriz olmaması için bu değişiklikleri yönetmeniz gerekiyor.
Kev

2
@ Zero3 - evet, Uygulama Havuzu ayarlarının çoğunun değiştirilmesi, işlemin yeniden başlatılmasını gerektirir ve bu, varsayılan olarak hemen gerçekleşir. Bunu DisallowRotationOnConfigChange ile değiştirebilirsiniz - biraz daha fazlası için serverfault.com/questions/333907/… adresini ziyaret edin.
TristanK

11

Mükemmel cevap! teşekkürler Kev!

Küçük bir güncelleme: Gönderdiğiniz URL taşındı ve şu anda: http://bradkingsley.com/iis7-application-pool-idle-time-out-settings/

Bunun varsayılan olmamasının bir nedeni olup olmadığını ve uygulama havuzunu çok uzun süre açık tutmanın bir performans etkisi olup olmadığını merak ediyordum. Eh, boştayken devam ettirmek, trafik olduğunda ve boşta kalma süresi olmadığında geri dönüştürmemekten daha fazla sorun yaratmayacaktır. Bellek sızıntılarından veya diğer kaynak sızıntılarından endişeleniyorsanız, son geri dönüşümden / bellek tüketiminden bu yana zamana / istek sayısına bağlı olarak geri dönüşümü zorlamak için bir ayar vardır. İşte bunun için belgeler:

http://technet.microsoft.com/en-us/library/cc753179(v=ws.10).aspx

Sunucumu boşta iken geri dönüşüme (idleTimeout = 0) ayarlayacağım ve her 24 saatte bir geri dönüşüme sokacağım: Geri Dönüşüm> Normal Zaman Aralığı = 1440


15
Geri dönüşümünüzü 24 saat yerine sabit bir zamana (ör. 0100) ayarlamanız muhtemelen daha iyi olacaktır çünkü bu, son sunucu yeniden başlatılmasından / sıfırlanmasından bu yana 24 saatle sonuçlanacaktır.
Neal

1
Import-Module WebAdministration

$pools = Get-ChildItem iis:\apppools

foreach ($pool in $pools)
{ 
$poolname = $pool.Name

Set-ItemProperty IIS:\AppPools\$poolname -name processModel -value @{idletimeout="20"}
Set-ItemProperty IIS:\AppPools\$poolname -name processModel -value @{idletimeoutaction="Suspend"}
set-ItemProperty IIS:\AppPools\$poolname -Name Recycling.periodicRestart -Value @{time="0"} 
set-ItemProperty IIS:\AppPools\$poolname -Name Recycling.periodicRestart.schedule -Value @{value="02:00:00"} 
Set-ItemProperty IIS:\AppPools\$poolname -name Recycling -value @{logEventOnRecycle="Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange, PrivateMemory"} 

Write-Host "Updated $poolname settings" 
}

7
Bu yapıştırılan kodun açıklaması faydalı olacaktır.
Luke Alderton
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.