IIS üzerinde koşan tüm web uygulamaları gelen bir request yok ise. Belli bir zaman sonra sunucununun kaynak kullanımını minimize etmek için otomatik uykuya geçerler. Bir taraftan iyi olsa da bir taraftan bazı sorunlar oluşturabilir.
Örneğin uykuya geçen bir uygulamayı ilk çalıştırdığınız da web uygulamanız normalinden daha fazla zamanda çalışacak ve ilgili web uygulamasının ekranları gelecek.
Ya da arka plan işlemleri yapılan HangFire gibi Quartz gibi kütüphaneleri kullanıyor iseniz. Belli zaman aralıklarında belli işlemleri yaptırıyorsanız.
Ya da kuyruklama için RabbitMQ, kafka gibi kütüphaneler kullanıyor iseniz. Web uygulamanızı manuel tetiklemek veya uykuya geçmiş kuyruktan mesajları dinleyen web uygulamanızı uykudan uyandırmanız gerekir.
Ya da bir şekilde uygulamanız ya da IIS in çalıştığı server restart oldu. Application Pool lar durdu.
İlk request atılmadan bu gibi kütüphaneler ile çalıştırdığınız arka plan uygulamaları çalışmayacaktır. Ya uykudan uyandırmak için manuel tetiklemeniz ya da belli zaman aralıkları ile uykuya geçmesini engelleyecek requestler atacak kod parçaları yazmanız lazım.
Ya da IIS web site ayarlarında ve ilgili web uygulamasının Application Pool ayarlarında küçük config değişiklikleri ile ilk request atmanıza gerek kalmadan otomatik çalışmasını, ya da uykuya geçmesini engelleyebilirsiniz..
Bunu istemiyorsanız ayarları değiştirmelisiniz. Gelelim Nasıl yapıyoruz?
Bir ASP.NET uygulamasının otomatik olarak başlatılmasını ve her zaman IIS üzerinde çalışmasını sağlamak için aşağıdakileri yapmalıyız
1- Application Initialization modülünü kurmalıyız.
Not: ApplicationInitialization Modulü IIS 7,5 ve sonrası için kurulabilir.

Application Initialization modülü IIS’nin web uygulamanıza ilk HTTP isteğini yapmak veya uygulamanızı uyanık tutmak için gerekli olan modüldür.
2- Application Pool Ayarlarını Yapmak
IIS Yöneticisinde, hangi web uygulamasının otomatik çalışçmasını ve uykuya geçmesini istemiyorsanız o uygulamanın uygulama havuzuna sağ tıklayın ve “Gelişmiş Ayarlar” seçeneğini seçin. Resim 3 te Default Web Site İçin örnek gösterdim


Ardından; (Resim 4)
- NET CLR sürümünü v4.0 olarak ayarlayın.
 
- Başlangıç modunu “Her Zaman Çalışıyor” olarak ayarlayın.
 
- Boşta Kalma Süresini (dakika) 0’a ayarlayın.
 

3- IIS site Ayarlarını yapmak
IIS Yöneticisinde, uygulama için siteye sağ tıklayın, “Web Sitesini Yönet” -> “Gelişmiş Ayarlar”ı seçin ve “Ön Yükleme Etkin” değerini true olarak ayarlayın. (Resim 5)


Benim bu şekilde işimi gördü artık. Ben gece bile rabbitmq kuyruğuna mesaj gelse consume edebiliyor bir uygulamaya sahip oldum. Uykuya geçmiyor, server down olduğunda otomatik başlıyor. Süreci benim yerime IIS e devrettim 🙂
Umarım işinize yaramıştır…









