Mendaur ulang
Daur ulang biasanya * di mana IIS memulai proses baru sebagai wadah untuk aplikasi Anda, dan kemudian memberikan yang lama ke ShutdownTimeLimit untuk pergi dari kemauannya sendiri sebelum terbunuh.
* - biasanya: lihat pengaturan DisallowOverlappingRotation / "Disable overlapped recycle"
Ini destruktif , karena proses asli dan semua informasi statusnya dibuang. Menggunakan status sesi yang tidak dalam proses (mis. Server Negara atau database, atau bahkan cookie jika status Anda kecil) dapat memungkinkan Anda untuk mengatasi hal ini.
Tapi secara default tumpang tindih - yang berarti durasi pemadaman diminimalkan karena proses baru dimulai dan dihubungkan ke antrian permintaan, sebelum yang lama diberitahu "Anda memiliki [ShutdownTimeLimit] detik untuk pergi. Harap patuhi."
Pengaturan
Untuk pertanyaan Anda: semua pengaturan pada halaman tersebut mengontrol daur ulang dengan cara tertentu. "Shutdown" dapat digambarkan sebagai "daur ulang proaktif" - di mana proses itu sendiri memutuskan saatnya untuk pergi, dan keluar dengan tertib.
Daur ulang reaktif adalah tempat WAS mendeteksi masalah dan memotret proses (setelah membuat W3WP pengganti yang sesuai).
Sekarang, inilah beberapa hal yang dapat menyebabkan daur ulang dari satu bentuk atau lainnya:
- sebuah ISAPI memutuskan itu tidak sehat
- modul apa pun mogok
- batas waktu idle
- pembatasan cpu
- menyesuaikan properti kumpulan aplikasi
- seperti ibumu mungkin berteriak pada satu titik: "Berhenti mengambil itu, atau itu tidak akan pernah menjadi lebih baik!"
- "ping" kegagalan * tidak benar-benar ping per se, karena menggunakan pipa bernama - lebih banyak "deteksi hidup"
- semua pengaturan pada tangkapan layar di atas
Apa yang harus dilakukan:
Umumnya:
Nonaktifkan batas waktu Idle . 20 menit tidak aktif = boom! Proses baru pada permintaan masuk berikutnya. Setel ke nol.
Nonaktifkan Interval waktu reguler - standar 29 jam telah digambarkan sebagai "gila", "menjengkelkan" dan "pintar" oleh berbagai pihak. Sebenarnya, hanya dua yang benar.
Secara opsional Aktifkan DisallowRotationOnConfigChange (di atas, Nonaktifkan Reycling untuk perubahan konfigurasi ) jika Anda tidak bisa berhenti bermain dengannya - ini memungkinkan Anda untuk mengubah pengaturan kumpulan aplikasi apa pun tanpa secara langsung memberi sinyal ke proses pekerja yang harus dibunuh. Anda perlu mendaur ulang App Pool secara manual untuk mengaktifkan pengaturan, yang memungkinkan Anda melakukan pra-setel pengaturan dan kemudian menggunakan jendela perubahan untuk menerapkannya melalui proses daur ulang Anda.
Sebagai prinsip umum, biarkan ping diaktifkan . Itu jaring pengaman Anda. Saya telah melihat orang-orang mematikannya, dan kadang-kadang situs hang tanpa batas waktu, menyebabkan kepanikan ... jadi jika pengaturannya terlalu agresif untuk aplikasi Anda yang tampaknya sangat sangat lambat untuk merespons, mundur sedikit dan lihat apa yang Anda dapatkan, alih-alih mematikannya. (Kecuali Anda memiliki pengaturan dump-mode-crash-mode untuk W3WP yang digantung melalui proses pemantauan Anda sendiri)
Itu cukup untuk menyebabkan proses berperilaku baik untuk hidup selamanya. Jika mati, tentu, itu akan diganti. Jika hang, ping harus mengambil yang baru dan akan mulai dalam 2 menit (secara default; calc kasus terburuk harus: hingga frekuensi ping + ping timeout + batas waktu startup sebelum permintaan mulai bekerja lagi).
Pembatasan CPU biasanya tidak menarik, karena secara default dimatikan, dan juga dikonfigurasi untuk tidak melakukan apa-apa; jika itu dikonfigurasi untuk mematikan proses, tentu saja, itu akan menjadi pemicu daur ulang. Biarkan saja. Catatan untuk IIS 8.x, CPU Throttling menjadi opsi juga.
AppPool (IIS) bukan AppDomain (.Net) (tetapi mungkin mengandung satu / beberapa)
Tapi ... lalu kita masuk ke .Net land, dan daur ulang AppDomain, yang juga bisa menyebabkan hilangnya status. (Lihat: https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/ )
Versi singkat, Anda melakukannya dengan menyentuh file web.config di folder konten Anda (lagi dengan memilih!), Atau dengan membuat folder di folder itu, atau file ASPX, atau .. hal-hal lain ... dan itu tentang sama merusaknya dengan daur ulang App Pool, dikurangi biaya startup kode asli (ini murni konsep kode terkelola (.Net), jadi hanya hal-hal kode terkelola yang terjadi di sini).
Antivirus juga dapat memicu ini karena memindai file web.config, menyebabkan pemberitahuan perubahan, menyebabkan ....