geri dönüşüm
Geri dönüşüm, genellikle * uygulamanız için bir kapsayıcı olarak IIS'nin yeni bir işlem başlattığı ve daha sonra eskisi ShutdownTimeLimit'e öldürülmeden önce kendi isteğinden uzaklaşması için verir.
* - genellikle: DisallowOverlappingRotation / "Örtüşen geri dönüşümü devre dışı bırak" ayarına bakın
Öyle yıkıcı özgün süreç ve tüm devlet bilgisi atılır o. İşlem dışı oturum durumu (örneğin, Devlet Sunucusu veya bir veritabanı veya durumunuz küçükse bir çerez) kullanmak, bu sorunu çözmenize izin verebilir.
Ancak, varsayılan olarak çakışıyor - eski işlemden önce "[ShutdownTimeLimit] saniye geçiyor."
Ayarlar
Sorunuz: o sayfadaki tüm ayarlar bir şekilde geri dönüşümü kontrol eder. “Kapatma”, “proaktif geri dönüşüm” olarak tanımlanabilir - burada sürecin kendisinin gitme zamanının geldiğine karar verir ve düzenli bir şekilde çıkar.
Reaktif geri dönüşüm, WAS'ın bir problem tespit ettiği ve süreci vurduğu yerdir (uygun bir yedek W3WP kurduktan sonra).
Şimdi, işte bir formun veya diğerinin geri dönüşüme neden olabilecek bazı şeyler:
- sağlıksız olduğuna karar veren bir ISAPI
- herhangi bir modül kilitleniyor
- boşta kalma zaman aşımı
- işlemci sınırlayıcı
- uygulama havuzu özelliklerini ayarlama
- Annenin olarak verebilir bir noktada çığlık: "Dur toplama ona ya da daha iyisini almak asla!"
- "ping" hatası * aslında kendi başına pinging yapmaz, çünkü adlandırılmış bir boru kullanır - daha fazla "yaşam tespiti"
- yukarıdaki ekran görüntüsündeki ayarların tümü
Ne yapalım:
Genellikle:
Boşta kalma zaman aşımlarını devre dışı bırakın . 20 dakikalık hareketsizlik = bom! Bir sonraki gelen istek için yeni işlem. Bunu sıfıra ayarla.
Düzenli zaman aralığını devre dışı bırak - 29 saatlik varsayılan, çeşitli taraflarca "delice", "can sıkıcı" ve "akıllı" olarak tanımlanmıştır. Aslında, bunlardan sadece ikisi doğrudur.
İsteğe bağlı olarak DisallowRotationOnConfigChange'i açın (yukarıda, yapılandırma değişikliklerinde Reycling'i devre dışı bırakın ), yalnızca oynamayı kesemezseniz - bu, herhangi bir uygulama havuzu ayarını, çalışanın öldürülmesi gerektiğini çalışan işlemlere anında bildirmeden değiştirmenize olanak sağlar. Ayarların etkili olması için App Pool'u manuel olarak geri dönüştürmeniz gerekir; bu, ayarları önceden ayarlamanıza ve ardından geri dönüşüm işleminizle uygulamak için bir değişiklik penceresi kullanmanıza olanak sağlar.
Genel bir prensip olarak, ping özelliğini etkin bırakın . Bu senin güvenlik ağın. İnsanların bunu kapattıklarını gördüm ve sonra site zaman zaman süresiz olarak kilitleniyor, paniğe yol açıyor ... bu yüzden ayarlar görünüşte çok çok çok yavaş yanıt veren uygulamanız için çok agresifse, onları biraz geri çekin ve kapatmak yerine ne aldığınızı görün. (Kendi izleme süreciniz boyunca asılı W3WP'ler için otomatik kilitlenme modu dampingi oluşturmadıysanız)
Bu, iyi niyetli bir sürecin sonsuza dek yaşamasına neden olmak için yeterli. Eğer ölürse, kesinlikle değiştirilecektir. Askıda kalıyorsa, ping işlemi bunu yapmalı ve yenisi 2 dakika içinde başlamalıdır (varsayılan olarak; en kötü durumda hesaplanmalıdır: ping frekansına kadar + ping zaman aşımı + istekler yeniden çalışmaya başlamadan önce başlangıç zamanı sınırı ).
CPU sınırlaması normalde ilginç değildir , çünkü varsayılan olarak kapalıdır ve yine de hiçbir şey yapmamak üzere yapılandırılmıştır; Süreci öldürecek şekilde yapılandırılmış olsaydı, tabii ki, bu bir geri dönüşüm tetiği olurdu. Bırak onu IIS 8.x için not, CPU Throttling de bir seçenek haline gelir.
Bir (IIS) AppPool (.Net) AppDomain değildir (ancak bir / bazı içerebilir)
Ama ... o zaman .Net alanına ve AppDomain geri dönüşümüne giriyoruz ki bu da devlet kaybına neden olabilir. (Bkz. Https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/ )
Kısa versiyon, siz (toplama ile tekrar!) İçerik klasöründe bir web.config dosyası dokunarak veya başka şeyler o klasördeki bir klasör ya da bir ASPX dosyası veya .. ... oluşturarak ve işte bunu yaklaşık Uygulama Havuzu geri dönüşümü kadar yıkıcı olduğu sürece, yerel kod başlangıç maliyetlerini eksi (yalnızca bir yönetilen kod (.Net) konsepti olduğu için yalnızca yönetilen kod işleri burada olur).
Antivirüs ayrıca web.config dosyalarını tararken değişiklik bildirmesine neden olan ....