IIS'de bir uygulama tarafından kullanılan belleği nasıl sınırlayabilirim?


17

IIS çalışan işlemleri sunucularımızda çok fazla bellek alıyor. Her uygulamanın kullanabileceği belleği sınırlamak istiyorum. Sanal Bellek Sınırı veya Özel Bellek Sınırı üzerinde bir sınır belirlemem gerekip gerekmediği konusunda kafam karıştı. IIS'deki her uygulama kendi uygulama havuzundadır.

Özel bellek sınırını 500 MB ve sanal bellek sınırını 3 GB olarak ayarlarsam. Uygulama havuzu ne zaman geri dönüştürülür? 500 MB'a ulaştıktan sonra veya 3 GB'a ulaştıktan sonra geri dönüştürür.


Bahsettiğiniz bu 'Sanal Bellek Sınırı' ve 'Özel Bellek Sınırı' seçenekleri nerede?
Albay Panik

1
@ColonelPanic IIS7.5 üzerinde, bir uygulama havuzu Advanced Settings -> Recyclingbölümü altındalar .
ngm

Yanıtlar:


16

IIS bu sınırların her ikisine de saygı gösterecektir.

500 MB özel bayt sınırı ayarlarsanız, çalışan bir işlem 501 MB işlemeye çalışır çalışmaz, IIS yeni bir çalışan işlemi döndürür ve eskisini öldürür.

3 GB'lık bir sanal bellek sınırı ayarlarsanız, çalışan bir işlem 3.001 GB ayırmaya çalıştığında, IIS yeni bir çalışan işlemi döndürür ve eskisini öldürür.

64 bit bir platformdaysanız, ASP.NET uygulamasının agresif bir şekilde sanal bellek ayırdığını bilmeniz gerekir. Örnek olarak, yalnızca 88MB özel bayt kullanan bir çiftlikte bir uygulamam var, ancak şu anda 5.4GB Sanal Boyutta oturuyor. Sanal bellek rezervasyonunun sunucudaki fiziksel RAM'in bir işlevi olduğuna inanıyorum. 64 bitlik bir platformda, büyük miktarda sanal bellek ayırmanın sıfır performans etkisi olduğunu anlamak da önemlidir.

Temel olarak, bir IIS sunucusunda bellek tüketimi sorunları yaşıyorsanız, sınırlamak istediğiniz ayar Özel Bellek / Bayt'tır, gerçek bellek kullanımına karşılık gelen şey budur.


Teşekkürler Dominic, 500Mb özel bellek kullanmak için bir süreç ayarlamak için bir yol var ve bu sınırı geçtiğinde, geri dönüşüm olmadan disk üzerinde sanal bellek kullanmaya başlayın?
kishore

2
Farkında olduğumdan değil. Bir ASP.NET uygulamasında kesinleştirme bayt sorunlarına başladıktan sonra temel olarak 3 seçeneğiniz vardır. 1. Sınırlı veya gece kapalı bir saatte ulaştığınızda süreci geri dönüştürün (belli ki tercih edilmez ve kullanım penceresi sırasında geri dönüşüm yapılıyorsa oturum verilerini doğru şekilde yönetmeyi unutmayın) 2. Uygulama için ek fiziksel bellek alın (RAM ekleyin) sunucu çiftliğine veya farklı çiftliğe geçmek için, bu durumunuza bağlı olarak en basit çözüm olabilir). 3. Uygulamayı, belleği daha verimli kullanacak şekilde değiştirin. (En iyi seçenek, ancak uygulanması zor olabilir)
Dominic D

Ayrıca çeşitli ASP.NET uygulamalarında agresif bellek ayırmayı fark ettim. Herkes bu konuda çalışmak için iyi kaynaklar önerebilir mi? Nasıl ve neden olduğu hakkında daha fazla bilgi edinmek istiyorum ... Gözlemlediğim şey, ne kadar çok bellek varsa, uygulamaların o kadar fazla bellek ayırmasıdır.
Tom Pažourek
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.