Makale numarası: 821268 - Bu makalenin geçerli olduğu ürünleri görün.
Web Hizmetleri Microsoft ASP.NET uygulamasından çağrıları yaptığınızda, Çekişme, düşük performans ve kilitlenmeleri karşılaşabilirsiniz. İstemci isteklerine yanıt (veya "askıda") durdurmak veya çalıştırmak için çok uzun bir zaman bildirebilir. Kilitlenme olduğundan şüphe duyuluyorsa, alt işlemin geri dönüştürülmesi olabilir. Uygulama olay günlüğüne aşağıdaki iletileri alabilirsiniz.
Ayrıca aşağıdaki özel durum hata iletisi alabilirsiniz Tarayıcı:
"System.InvalidOperationException: İş parçacığı havuzu nesnesinde tamamlamak için yeterli boş iş parçacığı yoktu işlem."
Not Bu makale HttpWebRequest istekleri doğrudan uygulamalar için de geçerlidir.
"HttpException (0x80004005): İstek zaman aşımına out."
ASP.NET sayısını sınırladığından, bu sorun ortaya çıkabilir çalışan iş parçacıkları ve yürütmek için bir çağrı kullanabilirsiniz tamamlama bağlantı noktası iş parçacıkları istek sayısı.
Genellikle, bir işçi iş parçacığı isteği gönderir kod yürütmesine ve Web hizmeti ile geri almak için tamamlama bağlantı noktası iş parçacığı bir Web servisine bir çağrı kullanır. Ancak, isteği yeniden yönlendirildiği veya kimlik doğrulaması gerektiriyorsa, çağrı kadar iki çalışan iş parçacıkları ve tamamlama bağlantı noktası iki iş parçacığı kullanabilirsiniz. Bu nedenle, aynı anda birden çok Web hizmeti çağrıları ortaya çıktığında yönetilen iş parçacığı havuzu tüketebilir.
Örneğin, 10 çalışan iş parçacıkları için iş parçacığı havuzu sınırlıdır ve tüm 10 çalışan iş parçacığı bir geri yürütmek bekleyen kod şu anda yürütülen varsayalım. İş parçacığı havuzu için sıraya herhangi bir iş öğesini, bir iş parçacığı kullanılabilir hale gelinceye kadar engellendiği için geri arama hiçbir zaman çalıştırabilirsiniz.
Başka bir olası kaynak çekişmesi, bağlantı sayısı sınırı için System.Net ad alanını kullanan maxconnection parametresidir. Genellikle, Bu sınır, beklendiği gibi çalışır. Ancak, birçok uygulama birçok yapmaya çalışırsanız, istekler aynı anda tek bir IP adresi için iş parçacıkları için beklemeniz gerekebilir kullanılabilir bağlantı.
Bu sorunları gidermek için durumunuza en iyi uyan Machine.config dosyasındaki aşağıdaki parametreleri ayarlayabilirsiniz:
maxWorkerThreads ve maxIoThreadsASP.NET aşağıdaki iki yapılandırma ayarlarını kullanır. en fazla çalışan iş parçacıkları ve olan tamamlanma iş parçacığı sayısını sınırlamak için kullanılan:
Dolaylı olarak maxWorkerThreads parametresi ve maxIoThreads parametresi CPU sayısı ile çarpılır. İçin iki işlemci varsa, en fazla çalışan iş parçacığı sayısını örnektir Aşağıdaki:
2 * maxWorkerThreads
minFreeThreads ve minLocalRequestFreeThreadsASP.NET aşağıdaki yapılandırma de içerir. iş parçacığı kaç çalışan iş parçacıkları ve tamamlama bağlantı noktası belirleyen ayarları Uzak isteği veya yerel isteği başlatmak kullanılabilir olması gerekir:
Değil yeterli iş parçacığı kullanılabilir varsa, isteği sıraya alındı yeterli iş parçacığı isteği yapmak ücretsiz kadar. Bu nedenle, ASP.NET olur Aşağıdaki istek sayısı birden fazla aynı anda çalıştırma:
(maxWorkerThreads*CPU sayısı)-minFreeThreadsNotMinFreeThreads parametresi ve minLocalRequestFreeThreads parametresi dolaylı olarak CPU sayısı çarpılır değil.
minWorkerThreadsGibi ASP.NET 1.1 ve ASP.NET 1.0 Service Pack 3 ASP.NET ayrıca belirler aşağıdaki yapılandırma ayarı içerir nasıl birçok iş parçacıklarını hemen uzak hizmet vermek kullanılabilir yapılabilir. isteği.
İş parçacıkları Denetlenen bu ayarı, bir çok daha hızlı oranda oluşturulabilir çalışan iş parçacığı oluşturulan CLR'ın varsayılan "iş parçacığı ayarlama gelen" yetenekleri. Bu ayar, ASP.NET olabilir hizmet isteklerine etkinleştirir. ASP.NET istek sırası arka plan üzerinde bir slow-down nedeniyle aniden doldurma Sunucu, istemci veya buna benzer istekleri ani patlama sırada, ani rise istekleri sayısı neden olur. , minWorkerThreads parametresi için varsayılan değer 1'dir. MinWorkerThreads parametresinin değeri aşağıdaki değere ayarlamak öneririz.
Varsayılan olarak, minWorkerThreads parametresi Web.config dosyası yoksa veya Machine.config dosyası. Bu ayar örtülü olarak sayısı ile çarpımı CPU.
maxconnectionKaç bağlantıları için yapılan maxconnection parametre belirler bir Belirli bir IP adresi. Parametre aşağıdaki gibi görünür:
Uygulama kodu tarafından IP adresi yerine ana bilgisayar uygulama başvuruyorsa, parametre aşağıdaki gibi görünmelidir:
Son olarak, uygulama, 80'den farklı bir bağlantı noktası üzerinde barındırılıyorsa, URI, aşağıdakine benzer standart olmayan bağlantı noktası eklemek parametre içerir:
Bu makalede açıklanan parametreleri için tüm işlem düzeyinde ayarlardır. Ancak, uygulama etki alanı düzeyine maxconnection parametre ayarı uygulanır. Varsayılan olarak, Bu ayar için uygulama etki alanı düzeyinde geçerlidir çünkü en oluşturabilirsiniz. her uygulama etki alanında özel bir IP adresi için iki bağlantılarından birini, işlem.
executionTimeoutASP.NET için aşağıdaki yapılandırma ayarı kullanır. İstek yürütme süresi sınırı:
Bu sınır Server.ScriptTimeout özelliği kullanarak da ayarlayabilirsiniz.
NotExecutionTimeout parametresinin değeri artırmak istiyorsanız, siz de processModel değiştirmeniz gerekebilir responseDeadlockInterval parametre ayarı.
ÖnerilerBu bölümde önerilen ayarları için çalışmayabilir. tüm uygulamalar. Ancak, aşağıdaki ek bilgileri yardımcı olabilir uygun düzenlemeler.
Eğer bir Web hizmeti çağrısı için tek bir IP adresi her bir ASPX sayfası kuran, Microsoft, aşağıdaki yapılandırma ayarları kullanmanızı önerir:
Not Bu yapılandırmayı kullandığınızda, en fazla 12 yürütebilirsiniz. ASP.NET çünkü bu CPU aynı anda ister 100 88 12 =. Bu nedenle, en az 88 *N alt iş parçacıkları ve 88 *N tamamlama bağlantı noktası akışlardır diğer kullanılabilir (örneğin Web hizmeti geri aramalar için olduğu gibi) kullanır.
Örneğin, dört işlemci ve hyperthreading ile bir sunucuya sahip etkin. Bu formüllere göre aşağıdaki değerleri kullanır Bu makalede açıklanan yapılandırma ayarları.
Ayrıca, bu yapılandırmayı kullandığınızda, 12 bağlantılar kullanılabilir her IP adresi her uygulama etki alanı için CPU. Bu nedenle, aşağıdaki senaryo, istekleri için bekleyen çok az Çekişme oluşur bağlantıları ve iş parçacığı havuzu değil bitti:
Düşük performans ve ASP.NET ile birlikte IIS 7.0 üzerinde Çekişme yaşıyorsanız, aşağıdaki Microsoft Web günlükleri için gidin:
IIS 7.5, IIS 7.0 ve IIS 6.0 ASP iş parçacığı kullanımı
(http://blogs.msdn.com/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx)
IIS 7.0 içindeki ASP.net askıda kalabilir
(http://blogs.msdn.com/webtopics/archive/2009/02/13/asp-net-hang-in-iis-7-0.aspx)
Daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesine gidin:
ASP.NET performans geliştirme
(http://msdn2.microsoft.com/en-us/library/ms998549.aspx)
Makale numarası: 821268 - Last Review: 6 Şubat 2013 Çarşamba - Gözden geçirme: 1.0
Bu makaledeki bilginin uygulandığı durum:
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir: 821268
(http://support.microsoft.com/kb/821268/en-us/ )