4 Ocak 2012 Çarşamba

Thread.Sleep kullanımı

Selamlar,
System.Threading.Thread.Sleep kullanımı masaüstü uygulamalarında sorun yaratmasa da iis üzerinde çalışan uygulamalarda ciddi darboğaz yaratabilir.
Neden mi?
4 çekirdekli bir server’imiz olduğunu düşünelim.
ProcessorThreadMax değeri default olarak 25. Yani aynı anda 100 thread çalışabilir diye düşünürüz.
IIS 7.5/7.0 üzerinde ASP.Net 2.0 integrated modda çalıştırılıyorsa maxConcurrentRequestsPerCPU değeri default 12.
Senkron gelen isteklerde her istek bir thread demek olduğu için uygulama en fazla 48 isteğe cevap verebilir.
Sleep komutu ile threadlerimizi uyutursak default değerlerle zaten yeterince az olan thread havuzumuzdaki thread’leri boşa harcamış oluruz.
Yeni gelen istekleri kuyrukta bekletmek zorunda kalabiliriz.

Neyse ki Microsoft AspNET 4’te IIS 7.5/7.0 integrated modda bu değeri default 5000 olarak düzeltmiş.

Tarık

Hiç yorum yok:

Yorum Gönder