Bir uygulama havuzu geri dönüşümünden sonra asp.net mvc webapp'ımı nasıl ısıtırım?


23

IIS 8.0'da bir ASP.NET MVC webapp çalıştırıyorum. Talepler almadan önce başvurumun ısınması gerekiyor. Yeni bir kod dağıtırken uygulamayı otomatik olarak ısıtmak için zaten bir işlemimiz var. Ancak, uygulamanın ısınmamasına neden olan periyodik App Pool Recycle etkinliklerini görüyoruz.

Bir uygulama havuzu geri dönüşüm olayını tespit etmek ve bir komut dosyası veya bir kod yürütmek için en iyi yöntem var mı?

Yanıtlar:


55

Yapabileceğiniz birkaç şey var:

1. Uygulama Başlatma

Uygulama Başlatma Modülünü kullanabilirsiniz.IIS 8.0 ile birlikte gelen

senin içinde böyle bir şey olabilir web.config

<applicationInitialization
     doAppInitAfterRestart="true" >
   <add initializationPage="/" />
</applicationInitialization>

Bu, uygulamanızın köküne bir istek gönderir (initializationPage="/" uygulamanızın otomatik olarak başlatıldığı her seferde .

Ayrıca, uygulama havuzunuz için Başlat Modunu yapılandırabilirsiniz. Always RunningBunun anlamı, IIS her yeniden başlatıldığında, uygulama havuzunuzu hemen başlattığınızdan emin olmanızdır (bu, uygulama havuzunuza sağ tıklandığındaAdvanced Settings

görüntü tanımını buraya girin

ve Preloadsitenizin kendisi için (siteye sağ tıklayın ve Manage SiteardındanAdvanced Settings

görüntü tanımını buraya girin

2. Boşta Kalma Zaman Aşımını Devre Dışı Bırak

Ek olarak Idle Time-out, uygulama havuzunuz için içeriğini 0 (sonsuz) olarak değiştirerek idleTimeout'u devre dışı bırakabilirsiniz (varsayılan olarak IIS 20 dakikalık etkinliğin ardından uygulamayı kapatır ).

görüntü tanımını buraya girin

3. Periyodik geri dönüşümü devre dışı bırakın

Ayrıca Regular Time Interval (minutes)varsayılan olarak kapatın IIS her 29 saatte bir uygulamanızı geri dönüştürür.

görüntü tanımını buraya girin

İçin


3
Bu ayarların sakıncaları üzerine yorumlar memnuniyetle karşılanacaktır. Elbette temerrütsüz olmalarının bir nedeni var.
user42134

2
Elbette, tüm siteler her zaman hayatta kaldığından, aynı IIS kutusundaki birden fazla siteyi çalıştırırsanız yüksek bellek tüketimi, bu da çok düşük site yoğunluğuna neden olur. Ayrıca uygulamalarınızda bellek sızıntılarına karşı koruma yok. IIS'nin yönetilen diller web için popüler hale gelmeden önce çevrede olduğunu ve birçok uygulamanın uzun süre çalışmaya kalması durumunda bellek sızıntılarına ve garip duruma giren yerel işleyicileri çalıştırdığını unutmayın. Bu uygulama sorunları nedeniyle sunucuları sıfırlamak için gecenin ortasında uyanmak zorunda olan sysadmins yardımcı olmak için yapıldı. Yine de çoğu zaman geriye dönük karşılaştırılabilirlik nedenlerinden ötürü
temerrüdüler

1
IIS 7.5'te Alternatifler - Windows Server 2008 R2 ?
Kiquenet

2
Çalışması için # 1 için IIS 7.5'in Uygulama Başlatma Modülünü alabilirsiniz . # 2 ve # 3, IIS 7.5 için olduğu gibi geçerlidir
ahmelsayed,

1
Bunu kullanan insanlar için FYI: applicationInitializationgider<configuration><system.webServer>
Paul

1

Tecrübelerime göre, AlwaysRunning ve Preload etkin, fazla hızlanmıyor. En fazla bekleme süresi dinamik derleme (aspx precompile ile sabitlenebilir) ve derlemeleri belleğe ve önbelleğe almakla devam eder.

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.