IIS uygulama havuzları, çalışan işlemleri, uygulama etki alanları


88

IIS'de uygulama havuzları, çalışan süreçleri ve uygulama etki alanları arasındaki farklılıkları açıklayan var mı? Ayrıca, birlikte nasıl çalışırlar? Birkaç makale okudum ama yine de biraz kafa karıştırıcı.

  1. IIS'de oluşturulan her web sitesi bir uygulama olur mu?
  2. Her uygulama bir çalışan işlemle mi ilişkili?
  3. Uygulama etki alanları resmin neresine giriyor?

Yanıtlar:


103

Onları başka kelimelerle söylemeye çalışıyorum.

Bir sunucuda, birlikte çalışan birçok asp.net sitesine sahip olabilirsiniz. Her site bir uygulama alanıdır .

Her birine bir uygulama havuzu atamalısınız . Birçok uygulama etki alanı (site) aynı uygulama havuzuna sahip olabilir ve aynı uygulama havuzuna sahip oldukları için aynı süreçler altında ve aynı hesap altında çalışırlar ve havuzun aynı ayarlarına sahiptirler. Bu havuz yeniden başlarsa, bu havuzların altındaki tüm siteler yeniden başlar.

Artık her havuzda bir veya daha fazla çalışan işlem olabilir . Her çalışan işlem, sitenizi çalıştıran, kendi statik değişkenlerine, farklı başlatma durdurma çağrılarına vb. Sahip olan farklı bir programdır. Farklı çalışan işlemler birlikte iletişim kurmaz ve veri alışverişi yapmanın tek yolu ortak dosyalardan veya ortak bir veritabanından yapılır. Birden fazla çalışan işleminiz varsa ve bunlardan biri uzun süreli hesaplamalar yapıyorsa, diğeri internet aramalarını yönetmeye ve içeriği göstermeye dikkat edebilir.

Tek bir havuza birçok işçi işlemi atadığınızda, o zaman aranan web bahçesini yaparsınız ve siteniz, eğer bir bilgisayar tek bir işlem makinesiyse, birden fazla bilgisayardan çalıştırılır gibi olur.

havuzları ve süreçleri olan uygulama alanları

Her çalışan işlemin birçok iş parçacığı olabilir.

Daha fazla çalışan işlem sizi nasıl etkiler:
Bir çalışan işleminiz olduğunda her şey daha basittir, uygulamanız arasında tüm statik değişkenler aynıdır ve lockonları senkronize etmek için kullanırsınız.
Birden fazla alt işlem atadığınızda , lockfor statik değişkenleri kullanmaya devam edersiniz , statik değişkenler sitenizin birçok çalıştırması arasında farklı değildir ve ortak bir kaynağınız varsa (örneğin, diskte bir küçük resmin oluşturulması) daha sonra çalışan sürecinizi ile senkronize etmeniz gerekir Mutex.

Bir not daha. Daha fazla alt işlem yaptığınızda, eşzamansız sayfa yüklemeleri daha sorunsuz olabilir. Asp.net'in oturum işleyicisinde, bir sayfa yüklemesi için tüm süreci kilitleyen küçük bir sorun var - bu iyi ve iyi bilmenize ve idare etmenize bağlı olarak - ya da değiştirmenize bağlı.

Öyleyse, yalnızca birçok işçi süreciyle bir site hakkında konuşalım. Burada, ortak kaynak değişikliğinizi senkronize etmeniz gereken sorunla karşı karşıyasınız Mutex. Ancak oturum kullanan sayfalar / işleyiciler, oturum onları kilitlediği için eşzamansız değildir. Bu başlangıç ​​için iyidir çünkü birçok noktanın bu senkronizasyonunu kendi kendinize yapmaktan kaçınırsınız.

Bu konuyla ilgili bazı sorular:
Aynı oturumu paylaşırken başka bir web uygulaması işlenirken web uygulaması engellendi
Web hizmetine jQuery Ajax çağrıları senkronize görünüyor
ASP.NET Sunucusu sayfaları eşzamansız olarak
işlemiyor ASP.Net oturumunu tamamen değiştiriyor

Şimdi bu oturum kilidi farklı siteleri etkilemiyor.

Farklı siteler arasında daha fazla çalışılmış süreç, bir sitenin diğerini uzun süren süreçle engellememesine yardımcı olabilir.
Ayrıca farklı siteler arasında daha fazla havuz da yardımcı olabilir, çünkü her havuzda en az bir çalışan işlem vardır, ancak işlem gezginini kullanarak kendi kendinize hatırlayın ve görün, her çalışma süreci bilgisayarınızın daha fazla belleğini ve 16G belleğe sahip büyük bir sunucuyu alır. ve bir SQL sunucusunda çok fazla farklı işlenmiş süreç olamaz - örneğin 100 paylaşılan siteye sahip bir sunucuda, 100 farklı havuzunuz olamaz.


IIS 6 ve üzeri ile karşılaştırıldığında IIS 5'in işleyişinden farklı olduğunu anlıyorum. Dolayısıyla, IIS 5'te bir Çalışan işleminiz ve IIS 6'ya kıyasla birden çok uygulama etki alanınız vardır, her uygulama havuzu için bir tane olmak üzere birden çok çalışan işleminiz (w3wp.exe) vardır. IIS 6.0'da inetinfo, isteğe bağlı olarak farklı çalışan işlemlere yönlendirir. Ben burada mıyım? İşte kaynağım dotnetslackers.com/articles/iis/…
Ravi

@ user460103 Evet iis5'in bir çalışan süreci vardır (birden çok uygulama etki alanı yalnızca küçük bir saldırı ile olabilir, ancak birlikte çalışmazlar.) Bir sitede çok sayıda çalışan işleminiz olduğunda, evet iis6 sizi farklı çalışan işlemlere yönlendirebilir.
Aristos

IIS, her web isteği için yeni bir işlem başlatıyor mu? Yoksa yeni bir konu mu açıyor?
Değişken

@variable Yeni bir iş parçacığı açın - süreç her zaman çalışır durumda kalır veya havuzda kurduğunuz şekilde geri dönüştürürler ...
Aristos

Tamam, birden fazla süreç varsa, oturumlar nasıl
değişken

18
  • Bir IIS sunucusunda birden çok uygulama havuzu olabilir.
  • Bir web uygulaması, bir uygulama havuzuna bağlanır.
  • Bir uygulama havuzunun birden fazla çalışan işlemi olabilir (Web Garden etkinleştirildiğinde).
  • Bir çalışan işlemin birden çok uygulama alanı olabilir. Bir uygulama alanı yalnızca bir çalışan süreçte yaşar.
  • Bir uygulama alanında birden çok iş parçacığı olabilir. Bir iş parçacığı, farklı uygulama alanları tarafından farklı zamanlarda paylaşılabilir.

ASP.NET geliştiricilerinin anlamı: Web sitenizi ölçeklenebilir hale getirmek için, proc in-proc oturumu kullanmayın ve senkronizasyon için statik sınıf değişken kilidi kullanmayın.


7
  1. Evet, ancak her uygulama bir web sitesi değildir. Bir web sitesinin altına yerleştirilmiş bir uygulamaya sahip olabilirsiniz .

  2. Evet, her uygulamanın bir çalışan işlemi (uygulama havuzu) olması gerekir, ancak bir uygulama havuzu birkaç uygulamayı sunucu olarak kullanabilir. Tek bir web uygulaması dağıtılabilir (web bahçesi / çiftlik), yani birden çok işlemde çalışacağı anlamına gelir.

  3. Her işlem kendi uygulama alanında çalışır (her uygulama havuzu ayrı bir uygulama alanıdır).


MSDN'den.

Bir Web Uygulaması Oluşturun :

Uygulama, bir Web sitesinin kök dizinindeki içerik gruplaması veya Web sitesinin kök dizini altında ayrı bir klasörde bulunan içerik grubudur.

Uygulama Havuzları :

Bir uygulama havuzu, o uygulama havuzuna atanmış bir veya daha fazla uygulamaya isteklere hizmet eden ortak ayarlarla yapılandırılmış bir veya daha fazla çalışan işlem grubunu tanımlar. Uygulama havuzları, bir dizi Web uygulamasının benzer şekilde yapılandırılmış bir veya daha fazla çalışan işlemi paylaşmasına izin verdiği için, bir dizi Web uygulamasını sunucu bilgisayardaki diğer Web uygulamalarından izole etmek için uygun bir yol sağlar. Süreç sınırları her bir çalışan süreci birbirinden ayırır; bu nedenle, bir uygulama havuzundaki uygulama sorunları, diğer uygulama havuzlarındaki Web sitelerini veya uygulamaları etkilemez. Uygulama havuzları, Web altyapınızın hem güvenilirliğini hem de yönetilebilirliğini önemli ölçüde artırır.


Dolayısıyla IIS sürecinin birden çok uygulama alanı (uygulama havuzları) vardır ve her uygulama havuzu birden çok web sitesi olabilir. Öyleyse birden çok web sitesi tek uygulama alanında mı bulunuyor? Ya bir web sitesinde bir şeyler ters giderse, tüm uygulama alanını ve içinde bulunan tüm web sitelerini kapatır mı?
Ravi

@ user460103 Bir havuzu çökertirseniz, evet, ona bağlı tüm siteler durur ve yeniden başlar.
Aristos

1
2. Hayır. Bir web bahçesi yapılandırılırsa, bir uygulama muhtemelen birden fazla çalışan işlemi kapsayabilir.
Wiktor Zychla

@Wiktor - Bunu engellemedim. Ancak, açıklığa kavuşturmak için güncellenmiş cevap.
Oded

3

Kaynak bağlantısından: -http: //weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx

Uygulama bir IIS terimidir, ancak ASP.NET'in kullandığı bir terimdir. Esasen, farklı siteleri veya sitelerin bölümlerini diğerlerinden ayırmak için bir sanal alan veya bir dizi sınır oluşturur.

Bir AppDomain bir .NET terimidir. (IIS7'de, AppDomains, IIS içinde daha büyük bir rol oynar, ancak çoğunlukla bir ASP.NET terimidir)

Çalışan işlemi, web uygulamasının isteğini işlemek için kullanılır.

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.