Bagaimana cara menonaktifkan batas waktu idle kumpulan aplikasi di IIS7?

146

Apakah ini akan dinonaktifkan jika saya menetapkan batas waktu idle ke 0?

123
sumber

Jawaban:

184

Ya, mengatur nilai batas waktu idle ke nol akan menonaktifkan batas waktu idle.

Anehnya ini tidak didokumentasikan dalam dokumen MS tetapi bukti saya untuk ini muncul dari:

  • Skema Pengaturan IIS

    Jika Anda melihat skema pengaturan IIS di:

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

    Definisi skema untuk di idleTimeoutbawah

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

    sepertinya:

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

    Jika Anda melihat validationParameteratribut, kami melihat rentang 0 hingga 2592000 detik (,60 menentukan rincian pengaturan, dalam hal ini nilainya harus dapat dibagi dengan 60 [satu menit]).

    Jika Anda melihat nilai awal yang diizinkan 0maka itu biasanya menunjukkan bahwa pengaturan dapat dinonaktifkan.

  • Pengaturan Batas Waktu Keluar Aplikasi Pool IIS7

    Brad Kingsley adalah pendiri dan CEO OrcsWeb yang merupakan Microsoft hoster dan Gold Partner yang cukup terkenal, dihormati dan dipercaya.

  • Lalu ada juga bukti empiris dari fakta bahwa itu "hanya berfungsi".

Kev
sumber
3
kepala ke orang lain - setelah membaca ini, saya menetapkan batas waktu idle saya ke 0 pada IIS7 dan mulai menghitung waktu segera - setiap memuat halaman butuh 15 detik atau lebih. Saya sekarang telah meningkatkannya menjadi 600 dan semuanya sangat cepat lagi.
nailitdown
1
@ thumbnailitdown: Anda mungkin ingin mengeceknya. Saya hanya mengatur batas waktu aplikasi IIS6 ke 0, dan berfungsi dengan baik. Ada kemungkinan itu berbeda antara IIS7 / IIS6, yang baik untuk diketahui.
Doug S
3
karena saya memposting bahwa kami memiliki beberapa masalah dengan VPS yang saya kerjakan ... sangat mungkin entah bagaimana kesalahan konfigurasi. Saya baru saja mencoba untuk menduplikasinya di VPS baru, dan itu berlaku dengan benar, seperti yang dijelaskan.
nailitdown
3
@ Zero3 - baik .... sebelum mengubah setiap pengaturan di situs lalu lintas tinggi Anda harus selalu tes untuk efek samping dll pada pementasan lingkungan Anda / QA. Juga selama Anda menerapkan perubahan pada lingkungan produksi Anda, maka Anda benar-benar harus membuka halaman pemeliharaan untuk pengguna yang menghadapi publik sampai perubahan tersebut berlaku. Anda perlu mengelola perubahan ini sehingga tidak ada kejutan.
Kev
2
@ Zero3 - ya, mengubah banyak pengaturan App Pool memerlukan proses restart untuk mulai berlaku, yang secara default langsung terjadi. Anda dapat mengubahnya dengan DisallowRotationOnConfigChange - lihat serverfault.com/questions/333907/… untuk informasi lebih lanjut.
TristanK
11

Jawaban bagus! terima kasih Kev!

Pembaruan kecil: URL yang Anda kirim telah dipindahkan dan sekarang: http://bradkingsley.com/iis7-application-pool-idle-time-out-settings/

Saya bertanya-tanya apakah ada alasan mengapa ini bukan default, dan apakah mungkin ada dampak kinerja untuk menjaga kumpulan aplikasi terbuka terlalu lama. Nah, mempertahankannya saat idle tidak akan menyebabkan Anda lebih banyak kesulitan daripada tidak mendaur ulang ketika ada lalu lintas dan tidak ada waktu idle. Jika Anda khawatir dengan kebocoran memori atau kebocoran sumber daya lainnya, ada pengaturan untuk memaksa daur ulang berdasarkan waktu / jumlah permintaan sejak penggunaan daur ulang / memori terakhir. Berikut dokumentasi untuknya:

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

Saya akan mengatur server saya untuk tidak mendaur ulang saat idle (idleTimeout = 0), dan mendaur ulang setiap 24 jam: Daur Ulang> Interval Waktu Reguler = 1440

Shay Mandel
sumber
15
Anda mungkin disarankan untuk mengatur daur ulang ke waktu yang tetap (mis. 0100) daripada 24 jam karena akan menghasilkan 24 jam sejak server terakhir restart / iis reset.
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" 
}
pengguna6470603
sumber
6
Penjelasan tentang kode yang ditempel ini akan berguna.
Luke Alderton