IIS: Batas Waktu Idle vs Daur Ulang

97

Di IIS ada dua area (baik, lebih dari dua) di mana daur ulang dapat terjadi:

  1. Di bawah bagian "Model Proses" → "Batas Waktu Idle" (default 20 menit)

dan

  1. Di bawah bagian "Daur Ulang" → "Interval Waktu Reguler" (default 1740 menit)

Pertanyaan saya adalah:

  1. Apa perbedaan antara kedua metode tersebut?
  2. Apa implikasi negatif dari pengaturannya ke 0?
Ricky
sumber

Jawaban:

97

Idle Timeout adalah jika tidak ada tindakan yang diminta dari aplikasi web Anda, maka prosesnya akan berhenti dan melepaskan semuanya dari memori

Daur ulang adalah tindakan paksa pada aplikasi di mana proses Anda ditutup dan dimulai lagi, untuk tujuan kebocoran memori dan kesehatan sistem

Dampak negatif dari keduanya biasanya penggunaan Sesi dan status Aplikasi hilang jika Anda mengacaukan Recycle ke waktu yang lebih cepat. (Pengguna yang masuk dll akan keluar, jika mereka di mana akan "check out" semua pasti sudah hilang "itulah mengapa daur ulang berada pada nilai waktu habis yang begitu besar, waktu tunggu menganggur tidak masalah karena tidak ada yang masuk dan menganggap 20 menit tidak ada tindakan mereka tidak masih" berbelanja "

Hal positifnya adalah singkirkan waktu menganggur karena situs web Anda akan merespons lebih cepat pada tanggapan "pertama" jika ini bukan situs yang sangat aktif di mana pengguna harus menunggu untuk memuatnya jika Anda memiliki 1 pengguna setiap 20 menit memungkinkan mengatakan. Jadi situs web yang mendapatkan kurang dari 1 kali dalam 20 menit sebenarnya Anda ingin meningkatkan nilai ini karena situs web harus memuat lagi dari awal untuk setiap pengguna. tetapi jika Anda menyetel ini ke 0 dalam waktu yang lama, kebocoran memori dalam kode dapat selama jangka waktu tertentu, sepenuhnya mengambil alih server.

MichaelEvanchik
sumber
Terima kasih! Itu masuk akal. Dilema utama saya adalah bahwa "beban pertama" memakan waktu sangat lama. Saya pikir jika saya menyetel keduanya ke 0 maka saya bisa mengelak. Namun, masalah kebocoran memori adalah masalah. Apakah ada cara untuk "mendaur ulang" tetapi kemudian "memaksa" permintaan sehingga "akses pertama kali" selesai dan diselesaikan segera setelah daur ulang? Atau mungkin menjadwalkan daur ulang pada pukul 2 pagi, dan kemudian menjadwalkan "akses pertama kali" pada pukul 2.30? Apakah ada cara di IIS untuk melakukan itu?
Ricky
@Ricky Saya juga mendapatkan masalah pukulan pertama. Anda perlu menyetel startMode pool aplikasi Anda menjadi AlwaysRunning: msdn.microsoft.com/en-us/library/ee677285%28v=azure.10%29.aspx
Steve Hibbert
Ini juga berguna bagi saya: simple-talk.com/blogs/2013/03/05/…
Steve Hibbert
3
@Silvermind - Jika sesi disimpan dalam proses itu tidak akan disalin saat daur ulang. Lihat disini .
BornToCode
31

Dari sini :

Salah satu cara untuk menghemat sumber daya sistem adalah dengan mengonfigurasi setelan batas waktu idle untuk proses pekerja dalam kumpulan aplikasi. Ketika pengaturan ini dikonfigurasi, proses pekerja akan ditutup setelah periode tidak aktif yang ditentukan. Nilai default untuk batas waktu idle adalah 20 menit.

Periksa juga Mengapa daur ulang kumpulan aplikasi default IIS disetel ke 1740 menit?

Jika Anda hanya memiliki beberapa situs di server Anda dan Anda ingin situs tersebut selalu memuat dengan cepat, setel ini ke nol. Jika tidak, ketika Anda memiliki waktu 20 menit tanpa lalu lintas, kumpulan aplikasi akan dihentikan sehingga dapat dimulai lagi pada kunjungan berikutnya. Masalahnya adalah bahwa kunjungan pertama ke kumpulan aplikasi perlu membuat proses pekerja w3wp.exe baru yang lambat karena kumpulan aplikasi perlu dibuat, ASP.NET atau kerangka kerja lain perlu dimuat, dan kemudian aplikasi Anda perlu dimuat. Itu bisa memakan waktu beberapa detik. Oleh karena itu saya menetapkannya ke 0 setiap kesempatan yang saya miliki, kecuali itu untuk server yang menghosting banyak situs yang tidak selalu perlu berjalan.

Rahul Tripathi
sumber
6

IIS sekarang memiliki

Idle Time-out Action : Suspend pengaturan

Penangguhan hanya membekukan proses dan jauh lebih efisien daripada menghancurkan prosesnya.

nPcomp
sumber
0

Saya telah mewarisi aplikasi desktop yang melakukan panggilan ke serangkaian Layanan Web di IIS. Layanan web (juga) harus dapat menjalankan proses berjangka waktu, secara independen (tanpa harus mengaktifkan klien). Karenanya mereka semua memiliki pengatur waktu. Pengatur waktu layanan web dimatikan (kebocoran memori?) Jadi kami menyetel waktu Idle ke 0 dan pengatur waktu tetap aktif.

DaniDev
sumber